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

新手上路,请多包涵
Scanner input = new Scanner(System.in);

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

 int i = input.nextInt()

原文由 The Man 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.3k
2 个回答

好吧,让我们对 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 。这意味着它将从程序的标准输入流中读取。

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

 int i = input.nextInt();

原文由 moffeltje 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

原文由 TheLostMind 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题