2009-04-30 4 views
0

다음 코드에서 for 루프 후 내 nextLine()이 작동하지 않는 이유를 알고 있습니까? 항상 nextLine()을 건너 뛰고 if 성명으로 직접 이동합니다.for 루프 다음에 nextLine()이 작동하지 않음

int[] a = new int[3] 

for(int i=0; i<3;i++) 
{ 
    a[i] = nextInt(); 
} 

String b = nextLine(); 

if(b == "go") 
{ 
    ....... 
} 
else 
{ 
    ..... 
} 
+0

나는 그런 일이 일어날 이유가 없다고 생각합니다. 자세한 내용이 필요합니다. 실행중인 코드가 우리에게 표시 한 소스 코드와 동일한 코드인지 확인하십시오. –

답변

0

작동하지 않는다는 의미는 무엇입니까? nextLine() 메서드가 호출되지 않는다는 의미입니다. 붙여 넣은 코드에 따라 nextLine() 메서드를 100 % 호출합니다.

0

(예외가 발생하지 않는 한) nextLine이 항상 실행되어야 관련된 문. nextLine에 대한 구현을 표시하지 않습니다. 실행되지 않았습니까? 약간 System.err.println("blah") 흩어져있을 수도 있습니다.

Btw는 : 문자열 비교가 거의 확실 b.equals("go")해야한다. bnull 일 경우 명시 적으로 확인하거나 표현식 "go".equals(b)을 작성하십시오.

3

어쩌면 당신이하고있는 것은 입력 정수에 대한 사용자 요구 다음 enter 키를 누릅니다 것을 추측하고있다. 정수를 파싱 할 때 정수를 파싱하고 제거합니다. 그러나 물론 그들이 밟은 개행 문자는 여전히 스트림에 있습니다. 그런 다음 nextLine()을 요청하면 스트림에 이미 행이 있으므로 (즉, 정수로 눌린 개행 문자로 끝나는 행) 즉시 반환됩니다. 그리고 실제로 정수가 입력 된 후에 nextLine()이 추가 라인을 기다릴 것으로 예상 했었지만 그 일은 일어나지 않았습니다. 이게 옳은 거니?