2017-11-21 1 views
-2

누군가 아래 코드의 내부 루프가 종료되지 않는 이유를 알려 줄 수 있습니까? 사용자의 입력 값이 특정 값인지 아닌지를 확인하기 위해 내부 루프를 추가했습니다. 그렇지 않으면 올바른 입력을 묻는 메시지가 표시됩니다. 코드를 디버깅하고 값을 전달하는 경우 나 변수의 정확한 값을 알 수 있지는 않지만이를 종료 루프를 강제해야한다 :자바 무한 루프

while (finished.equalsIgnoreCase("n")) { 
     System.out.println("Enter a persons name"); 
     names = in.nextLine(); 
     writer.println(names); 
     System.out.println("Finished? (Y/N)"); 
     finished = in.nextLine(); 
     while(!finished.equalsIgnoreCase("y") || !finished.equalsIgnoreCase("n")) { 
      System.out.println("Invalid choice; (Y/N)"); 
      finished = in.nextLine(); 
     } 
} 
+6

'|| '를'&&'로 변경하십시오. 논리적 OR을 사용하면 언제나 다른 것과 다를 수 있으므로 루프를 종료하지 마십시오. – AntonH

+0

또는 de morgans에 의해, 당신은'! (finished.equalsIgnoreCase ("y") || ! finished.equalsIgnoreCase ("n"))'' –

답변

0

모든 문자열 중 동일하지 여부에 y 여부 같다 n. 연산자를 사용하려고했을 가능성이 높습니다.

while(!finished.equalsIgnoreCase("y") && 
     !finished.equalsIgnoreCase("n")) { 

    // Code...