2013-05-10 3 views
-2

Я смотрел на это для немного .. и я даже поставить в п = нуль, чтобы посмотреть, что происходит .. но этот бит кода продолжает застрять в бесконечном цикле. элемент всегда равен нулю и должен выходить из цикла, но он продолжает работать.Бесконечный цикл застрял

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); 
+0

Чистый и восстановить/компиляции. –

+3

Это совсем не будет. Это код, с которым вы действительно сталкиваетесь? –

+1

Как бы вы даже вошли в цикл 'while' - если он инициализирован« null », вы никогда не должны даже обходить его один раз? – Floris

ответ

2

Он не войдет в цикл

String item = null; 

в этой строке ваш настраивают пункт нуль

while(item != null) 

, но в следующей строке вы установите пункт условия! = NULL whill всегда будет ложным, так он никогда не будет вводить петлю

Чтобы получить работу вы можете сделать следующее (как и все др готовый объяснил)

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

Ваши замечания верны - но это не объясняет, почему ОП думает, что он застревает в «бесконечном цикле» (в отличие от цикла, который никогда не запускается). – Floris

+0

@Floris отредактирован ... Чит-то :) – stinepike

0

Попробуйте это изменение

while(arrayRead.hasNext()) 

Как примечание стороны, на мой взгляд, это выглядит лучше

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

OP жалуется на бесконечный цикл, а не на провал. –

0

Я не могу видеть в любой ситуации, когда цикл может идти до бесконечности , Поэтому лучше всего проверить, проверяет ли элемент сканера hasNext().

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

или если вы хотите продолжать с текущей логикой, String должны быть инициализированы

String item = arrayRead.next(); 
Смежные вопросы