扫描仪输入 = 新扫描仪(System.in)的实际含义是什么?

2022-09-04 19:19:02
Scanner input = new Scanner(System.in);

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

int i = input.nextInt()

答案 1

好吧,让我们详细阐述一下有关 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”),并将其存储在变量中。同时,您正在调用类的(所谓的)构造函数,参数为 。这意味着它将从程序的标准输入流中读取。Scanner input = new Scanner(System.in);ScannerinputSystem.in

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

int i = input.nextInt();

答案 2

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

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


推荐