while循环java之后的执行流程

时间:2017-05-02 13:39:36

标签: java java.util.scanner

public static void main(String[] args) throws IOException {
     Scanner scan = new Scanner(System.in);
     int i=0;
     int arr[] = new int[10];
     while(scan.hasNext()){
         arr[i++] = scan.nextInt();
         System.out.println("sud");
     }
     System.out.println("hello");
}

}

如果输入为1 2 3 4 5,则打印5次。 sud表示循环正在工作但它不会转到System.out.println("hello");行或超出它。

2 个答案:

答案 0 :(得分:1)

由于您正在从System.in读取数据,因此当您在控制台模式下运行时,hasNext()会等待您输入更多数据。

为了告诉Scanner没有更多输入,您需要关闭输入流。在Windows上,它是 Ctrl + Z ,然后是 Enter 。在UNIX上,它是 Ctrl + D

如果您将输入放在一个文件中,并将程序重定向到从文件中读取,您的代码也会有效。

注意:您需要保护您的代码免受输入过多数据的用户的侵害。将i < arr.length添加到循环条件中,否则当最终用户输入第11个数字时,您的代码将以异常停止。

while(i < arr.length && scan.hasNext()) {
    ...
}

答案 1 :(得分:0)

可能添加一个if语句来检查特定输入以停止输入(打破循环)

 while(scan.hasNext()){
     String tmp = scan.next();
     if (tmp.equals("exit"))     
         break;
     else {
     arr[i++] = Integer.parseInt(tmp);
     System.out.println("sud");
     }
 }
 System.out.println("hello");

INPUT:

1 2 3 exit

输出:

sud
sud
sud
hello