Scanner input = new Scanner(System.in) 实际上是什么意思?

14
Scanner input = new Scanner(System.in);

您能否详细解释一下上面的代码是如何逐步执行的?我不太理解它是如何运作的,以及它与我后来能够执行这个语句有何联系:

int i = input.nextInt()

4
你知道 Java 中的“class”是什么意思吗? - moffeltje
1
http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html - almightyGOSU
1
@moffeltje,我知道在C++中类和对象的含义,尽管我还没有接触Java中的这部分内容。 - The Man
@Pshemo 它是一个从键盘特定读取输入的对象? - The Man
1
顺便提一下,正如之前提到的一样,Scanner可以用于从任何InputStream或Reader中读取数据作为文本。因此,如果您传递FileInputStream或FileReader的实例,或者可以由任何InputStream / Reader包装的任何源,则它也可以从文件中读取。 - Pshemo
显示剩余3条评论
5个回答

16

好的,让我们用一些简化的解释来详细说明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();

7

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

因此,一旦您的扫描仪实例指向它,您就可以扫描流并获取整数字符串等内容。


0
Scanner input = new Scanner(System.in);

从程序的标准输入(在这种情况下可能是控制台)创建一个新的Scanner类型对象。

int i = input.nextInt()

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

0

Scanner input = new Scanner(System.in); 它创建了一个新的Scanner实例,该实例指向作为参数传递的输入流。因此,在这里,流是标准输入流。

因此,一旦您的扫描仪实例指向它,您就可以扫描流并将值存储到整数、字符串中,并执行其他操作。


0
Scanner s = new Scanner(System.in);

上述语句创建了一个java.util.scanner包中定义的Scanner类对象。Scanner类允许用户从控制台输入。

System.in作为参数传递给Scanner类。它告诉Java编译器系统输入将通过控制台(键盘)提供。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接