Scanner input = new Scanner(System.in) 到底是什么意思?

What does Scanner input = new Scanner(System.in) actually mean?

Scanner input = new Scanner(System.in);

你能详细解释一下上面的代码是做什么的吗?我真的不明白它是如何工作的以及它如何链接到我以后能够做这个声明:

int i = input.nextInt()

Scanner input = new Scanner(System.in); 创建一个 new Scanner 实例,它指向作为参数传递的 输入流 。在您的情况下,蒸汽是 标准输入流

因此,一旦您的扫描仪实例指向它,您就可以扫描 流并获取 integersstrings 并执行其他操作。

Scanner input = new Scanner(System.in);

从程序的标准输入(在本例中可能是控制台)创建类型为 Scanner 的新对象 和

int i = input.nextInt()

使用该对象的 nextInt 方法,它允许您输入一些文本并将其解析为整数。

好的,让我们对 Scanner class.

做一些简单的解释

这是一个标准的 Oracle class,您可以通过调用 import java.util.Scanner.

来使用它

所以让我们做一个基本的例子 class:

class Scanner {
   InputStream source;

   Scanner(InputStream src) {
       this.source = src;
   }

   int nextInt() {
       int nextInteger;
       //Scans the next token of the input as an int from the source.
       return nextInteger;
   }
}

现在,当您调用 Scanner input = new Scanner(System.in); 时,您会创建 Scanner class 的新对象(因此您会创建一个新的“扫描仪”)并将其存储在变量 input。同时,您正在使用参数 System.in 调用 class 的(所谓的)constructor。这意味着它将从程序的标准输入流中读取。

现在,当您调用 input.nextInt(); 时,您将从刚刚创建的对象(也 documented)执行该方法。但是正如我们所见,这个方法 returns 是一个整数,所以如果我们想使用那个整数,我们必须像你一样将调用分配给一个变量:

int i = input.nextInt();
Scanner s = new Scanner(System.in);

上面的语句创建了一个 Scanner class 的对象,它在 java.util.scanner 包中定义。 Scanner class 允许用户从控制台获取输入。

System.inScanner class 中作为参数传递。它告诉 java 编译器系统输入将通过控制台(键盘)提供。