-3

我一直在看这个……我什至输入了 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);
4

3 回答 3

2

它不会进入循环

   String item = null;

在这一行中,您将项目设置为 null

   while( item != null ) 

但是在下一行中,您设置了条件 item!=null whill 将始终为 false,因此它永远不会进入循环

要使其正常工作,您可以执行以下操作(如前所述)

   while( arrayRead.hasNext() ) {           
       item = arrayRead.next();
       collection.add(item);           
   }
于 2013-05-10T04:04:28.850 回答
0

试试这个改变

while(arrayRead.hasNext()) 

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

Scanner arrayRead = new Scanner(new File("SalesStar.txt"));
于 2013-05-10T04:05:19.350 回答
0

当循环可能进入无限时,我看不到任何情况。所以这里检查的最佳条件是检查扫描仪是否有下一个()元素。

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

或者如果你想继续当前的逻辑, String 应该被初始化为

String item = arrayRead.next();
于 2013-05-10T04:05:47.963 回答