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

时间:2015-06-03 06:50:44

标签: java input java.util.scanner

Scanner input = new Scanner(System.in);

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

int i = input.nextInt()

4 个答案:

答案 0 :(得分:6)

好的,让我们详细说明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类的新对象(因此您创建了一个新的“扫描程序”)并将其存储在变量input中。与此同时,您使用参数System.in调用类的(所谓的)constructor。这意味着它将从程序的标准输入流中读取。

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

int i = input.nextInt();

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

Scanner input = new Scanner(System.in);

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

int i = input.nextInt()

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

答案 3 :(得分:0)

扫描仪s =新扫描仪(System.in);

上面的语句我们创建了一个Scanner类的对象,该对象在 import java.util.scanner 包中定义。 scanner类允许用户输入控制台。

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