扫描仪输入=新的Scanner(System.in)实际上是什么意思?


问题内容
Scanner input = new Scanner(System.in);

您能否详细解释上面的代码在做什么?我不太了解它是如何工作的,以及以后如何执行此语句,它如何链接到我:

int i = input.nextInt()

问题答案:

好了,让我们详细说明一下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;
   }
}

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

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

int i = input.nextInt();