2016-10-26 3 views
-1

먼저 Java에 익숙하지 않으며 전문 프로그래머는 아니지만 VBA에 여러 매크로를 작성했습니다.Java에서 입력 확인

저는 고등학교의 자바 과제로 아들을 도우려고합니다. 과제에는 사용자가 Y 또는 N 입력을 갖는 지점이 있습니다. 나는이 코드가 왜 작동하지 않는지 알 수 없다.

  // Wait for user to press Y or N 
     do{ 
      playAgain = input.next(); 
     } while (!playAgain.equalsIgnoreCase("n") || (!playAgain.equalsIgnoreCase("y")); 

하나의 조건 만 확인하면 작동합니다.

답변

1

로직이 입력이 n/N또는y/Y과 같지 않은 한 루핑을 계속한다고 말합니다. 이것은 예와 아니오 입력 모두에 항상 적용되며 실제로는 모두 입력입니다. no가 입력되면 첫 x 째 조건은 실패하지만 두 x 째 조건은 true가되고 yes의 경우 반대가됩니다.

이 문제를 해결하려면, 당신은 함께 &&해야하는 두 가지 조건 :

do { 
    playAgain = input.next(); 
} while (!playAgain.equalsIgnoreCase("n") && (!playAgain.equalsIgnoreCase("y")); 
1

|| OR을 의미합니다. 그럼, A || A가 참이거나 B가 참이면 B가 참입니다. 모든 조건은 다음과 같이 작동합니다. 첫 번째 조건이 참이면 두 번째 조건은 평가되지 않습니다. first가 false이면 second가 평가됩니다. 둘 중 하나가 참이면 결과는 참입니다.

do while 루프에서 :! playAgain.equalsIgnoreCase ("n")은 "y"가 입력 값과 같으면 true이고, 반대의 경우도 마찬가지입니다. 어느 쪽이든 조건 중 하나가 while 루프 조건에서 항상 true가되므로 루프가 영원히 계속됩니다. 해결책은 위에서 주어진 대답에 언급되어 있습니다. (|| 대신 & &을 사용하십시오)