无限循环卡住了

时间:2013-05-10 04:01:06

标签: java loops for-loop while-loop infinite

我一直在看这个......我甚至把item = null放进去看看会发生什么......但是这段代码一直停留在无限循环中。 item始终等于null,并且应该从循环开始,但它会继续运行。

 ArrayList<String> collection = new ArrayList();
  Scanner arrayRead = new Scanner(new FileReader("SalesStar.txt"));

   //iterate through file to put into Arraylist
   String item = null;
   while( item != null ) {           
       item = arrayRead.next();
       collection.add(item);           
   }

   arrayRead.close();


   System.out.println(collection);
   System.out.println(item);

3 个答案:

答案 0 :(得分:2)

它不会进入循环

   String item = null;

在此行中您将项目设置为空

   while( item != null ) 

但是在下一行你设置条件项!= null whill总是false,所以它永远不会进入循环

要使其正常工作,您可以执行以下操作(正如所有已解释的那样)

   while( arrayRead.hasNext() ) {           
       item = arrayRead.next();
       collection.add(item);           
   }

答案 1 :(得分:0)

尝试此更改

while(arrayRead.hasNext()) 

作为旁注,在我看来,这看起来更好

Scanner arrayRead = new Scanner(new File("SalesStar.txt"));

答案 2 :(得分:0)

当循环无限时,我无法看到任何情况。因此,检查的最佳条件是检查是否扫描hasNext()元素。

String item = null;
   while( arrayRead.hasNext() ) {           
       item = arrayRead.next();
       collection.add(item);           
   }

或者如果您想继续使用当前逻辑,String应初始化为

String item = arrayRead.next();