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 表示 while 循环正在工作,但它不会转到 System.out.println("hello");线或超出线。

请您参考如下方法:

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

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

如果您将输入放入文件中,并将程序重定向为从文件中读取,您的代码也将起作用。

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

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


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!