2013-05-10 5 views
-2

저는 이것을 조금 보았습니다. 그리고 어떤 일이 일어나는지 보려고 아이템을 넣었습니다. 그러나이 코드는 무한 루프에 머물러 있습니다. 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); 
+0

청소로 초기화되어야하고, 컴파일/다시 빌드합니다. –

+3

이것은 전혀 루프되지 않습니다. 이 코드가 실제로 문제가 있습니까? –

+1

어떻게'while' 루프에 들어가겠습니까? 'null'로 초기화되면 한번도 돌아 다니면 안됩니다. – Floris

답변

2

그것은 당신이 항목 널

while(item != null) 

설정되지만 바로 다음 줄에 당신이 조건 항목을 설정이 줄 루프

String item = null; 

를 입력하지 않습니다! = null이 항상 false 일 것입니다. 따라서 루프에 들어 가지 않습니다.

작동 시키려면 다음을 수행하십시오 (all 준비

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

당신의 관찰은 정확합니다. 그러나 이것이 OP가 "무한 루프"에 갇혀 있다고 생각하는 이유를 설명하지 않습니다. – Floris

+0

@Floris edited ... THanks :) – stinepike

0

이 루프는 무한에 갈 수있을 때 더 나은

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

OP가 무한 루프에 대해 불평하고 반복하지 않습니다. –

0

내가 어떤 상황을 볼 수 없습니다 보인다 내보기에, 보조 노트로이 변경

while(arrayRead.hasNext()) 

을보십시오) 설명 . 그래서 여기서 가장 좋은 조건은 스캐너 hasNext() 요소 여부를 확인하는 것입니다. 당신이 현재의 논리를 계속 싶다면

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

또는 문자열이

String item = arrayRead.next(); 
관련 문제