当前位置: 首页 > 面试题库 >

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

唐兴思
2023-03-14
问题内容
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();


 类似资料:
  • 因此,我是一个新的Java程序员,我正试图弄清楚为什么一段代码不能工作。我遇到的问题是“String interests=input.nextLine();”这一行,它跳过了用户的输入并跳转到下一个System.out,所以它只显示“Your Profile...”。在允许用户输入任何数据之前。抱歉,如果这是一个愚蠢的问题,我是很新的!

  • e、 (g) 此扫描仪工作不正常。但在删除close()后,它可以正常工作。 我想原因是“ystem.in”有问题。 请给我答案。 非常感谢。 )首先在a()中调用input.nextLine(),然后在b()中调用scan.nextInt()。我有错误,如NoSuchElementExcema。

  • 对于作业,我必须编写以下代码: 当我尝试编译它时,它在命令提示符下给了我3个错误,说“无法解析符号,符号:类扫描仪,位置:类单词,扫描仪用户输入=新扫描仪(System.in)”。我不确定错误在哪里。我应该使用BufferedReader作为输入吗?

  • 我有一个链接到中。现在,在使用了

  • 问题内容: 我不明白为什么第15行不做任何输入,将不胜感激:3 输出量 请输入您的问题的第一个数字!2552所以您选择了2552选择您的第二个数字41您选择了第二个数字41现在输入ur运算符 由于某种原因,输出在最后一行结束并停止,并且不接收任何信息! 问题答案: 您需要在调用行的后面立即调用,原因是仅要求下一个整数不会占用输入中的整个行,因此您需要通过调用来跳至输入中的下一个新行字符。 每次您需

  • 问题内容: 我有一个链接到。现在,使用之后,我应该将其关闭,因为将其保持打开状态是不好的编码习惯。但是,如果我关闭,我也将关闭!谁能告诉我如何关闭而不关闭(如果有的话)。 问题答案: 一种选择是将流包装为,以防止流被关闭。然后,你的读者将使用而不是原始流。