如何在Java中创建整数输入流?

时间:2014-02-13 01:07:46

标签: java loops while-loop java.util.scanner

我需要做一个分配,我必须编写一个带有以下条件的while循环:

while(不是流的结尾){

}

我对“不是流的一部分”感到困惑。当控制台中没有整数输入时,如何使其停止读取?输入方式如下:1 2 3 4 5 6 7 8 9。 我正在使用Scanner类,我的代码是这样的:

Scanner myScanner = new Scanner(System.in);
int inputValue = userInput.nextInt();
while(not end of stream) {
   if (.......) {
      ....
   } else {
      ....
   }
}

谢谢!

1 个答案:

答案 0 :(得分:1)

请不要让 stream 这个词让您感到困惑,在从System.in阅读时,没有连续的流量'数字来了..用户可以输入他想要的东西,只要他愿意。直到他点击进入'什么都不会发生。

那就是说,情景更像是这样:

1 用户类型71 2 30 5 1并点击 Enter

2 userInput.nextInt();会返回它找到的第一个int 71

3 现在您可以这样做: [已编辑]

public static void main(String[] args) {
    System.out.print(">");
    Scanner userInput = new Scanner(System.in);
    int inputValue = userInput.nextInt();
    while (userInput.hasNextInt()) {
        System.out.println("you just wrote: " + userInput.nextInt());
    }
    userInput.close();
}

因此,直到扫描仪找不到任何不是int的输入,循环才会继续。换句话说,当用户键入例如' b'循环终止。

现在一切都取决于你在while-loop中必须做些什么。您可以测试userInput.hasNext()以查看是否有,或userInput.nextLine()等待Enter ..或者您需要的任何内容。

当我运行上述主广告并输入时:[ 1 输入 2 输入 3 输入 4 输入 a 输入],这是输出:

>1                  // <-- this is the number before the while loop
2                   // <-- now another number
you just wrote: 2   // <-- and the while loop makes its first iteration
3                   // <-- then it waits for you to input the 3rd number
you just wrote: 3   // <-- to make its next iteration
4                   // <-- and the 4th
you just wrote: 4   // <-- 4th iteration
a                   // <-- until you type something else

// end of program

用户始终必须按 Enter - 否则操作系统不会将输入的输入提供给Java程序。这与操作系统为Java程序运行提供的Shell / Console设置有关。因此,在您点击输入之前,Java不会看到任何输入。