Scanner输入=新的Scanner(System.in)究竟是什么意思?

The*_*Man 9 java input java.util.scanner

Scanner input = new Scanner(System.in);
Run Code Online (Sandbox Code Playgroud)

您能否详细解释上面的代码是如何逐步完成的?我真的不明白它是如何工作的以及它之后如何能够做到这一点:

int i = input.nextInt()
Run Code Online (Sandbox Code Playgroud)

mof*_*tje 7

好吧,让我们详细说明关于Scanner班级的一些简化说明.

它是一个标准的Oracle类,您可以通过调用它来使用它import java.util.Scanner.

那么让我们来做一个类的基本例子:

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;
   }
}
Run Code Online (Sandbox Code Playgroud)

现在,当你打电话给Scanner input = new Scanner(System.in);你时,你要创建一个新的Scanner类对象(所以你创建一个新的"扫描仪")并将它存储在变量中input.同时,您使用参数调用类的(所谓的)构造函数System.in.这意味着它将从程序的标准输入流中读取.

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

int i = input.nextInt();
Run Code Online (Sandbox Code Playgroud)


The*_*ind 6

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

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