2016-10-27 2 views
-2

While 루프에서 첫 번째 루프를 벗어나지 만 While 루프에서 벗어나지 만 If If 체크에 들어 가지 않습니다. 뭐 잘못 했니?Java equals가 작동하지 않는다면 작동하지 않을 것입니다.

while (!"Y".equals(inputString) && !"N".equals(inputString)) { 
     inputString = Helper.InputHelper().toUpperCase(); 
     if (inputString.equals("N")) { 
      System.out.println("Thank you for playing!"); 
      System.exit(0); 
     } else if (inputString.equals("Y")) { 
      System.out.println("Starting a new game"); 
      MineSweeper game; 
      game = new MineSweeper(); 
     } 
    } 

모두가 내가 뇌사,

System.out.println("Would you like to play another game? (Y/N): "); 
    String input = ""; 
    while (!"Y".equals(input) && !"N".equals(input)) { 
     input = Helper.InputHelper().toUpperCase(); 
     if (input.equals("N")) { 
      System.out.println("Thank you for playing!"); 
      System.exit(0); 
     } else if (input.equals("Y")) { 
      System.out.println("Starting a new game"); 
      MineSweeper game; 
      game = new MineSweeper(); 
     } 
    } 

로 변경하고있어 권리와 감사 완벽한 작동합니다.

+0

죄송합니다. 실제로 그 질문은 어떤 것이 될까요? –

+0

'!'는 연산자가 아니며, Y가 아닌 "N"을 사용합니다. – Ash

+2

while (! a &&! b) {if (b)'... 여기에 문제가 있습니까? –

답변

0

를 입력 유지하기 위해 사용자가 필요합니다.

Scanner input = new Scanner(System.in); 
    while (true) {   
     String answer = input.next().toUpperCase(); 
     if (answer.equals("N")) { 
      System.out.println("Thank you for playing!"); 
      // don't forget to close you scanner 
      input.close(); 
      System.exit(0); 
      break; 
     } else if (answer.equals("Y")) { 
      System.out.println("Starting a new game"); 
      MineSweeper game; 
      game = new MineSweeper(); 
      input.close(); 
      break; 
     } else { 
      // if you don't get appropriate answer from users then warn them about it 
      System.out.println("Please type either Y or N"); 
     } 
    } 

어느 쪽이든, 조건에 부딪혔을 때 휴식해야합니다. 그렇지 않으면 루프가 멈추지 않습니다. 당신이 값으로 몇 가지 테스트를 실시하기 위해서

0

while 루프를 안에 사용자 입력 을 반복해서 읽어야합니다. 일반적으로 do-while-loop입니다.

String inputString = null; 
do 
{ 
    inputString = new Scanner(System.in).next(); 
    System.out.println("inputString = " + inputString); 
} 
while (!"Y".equals(inputString) && !"N".equals(inputString)); 
+0

그는 필요가 없습니다. 그는 입력 후 그 루프에 도착한 다음 Y 또는 N인지 확인하려고합니다. – xFighter

+0

사용자가 문자를 입력 할 수 있기 때문에 "키보드에서 읽기"주위의 루프가 필요하다고 생각합니다. 사용자가 유효한 입력을 입력 할 때까지 루프 'z'문자를 입력하면 루프가 계속됩니다. 유효한 입력은 'Y'와 'N'뿐입니다. –

0
while (!"Y".equals(inputString) && !"N".equals(inputString)) 

당신은 while 루프 상태에 문제가 있습니다.

입력 문자열이 Y와 같지 않고 N이 아닌 경우 N을 입력하고 잠시 동안 입력하십시오.

대신 입력 문자열이 Y 또는 같음 N 인 경우 루프를 입력해야합니다.

다른 당신은 내가이 당신이 원하는 무엇을 내기 inputString

0

항상 예를 ​​들어, 추천!

경우 inputString = "N" 부분 ("Y".equals ("N"로 평가 것 동안) & &! "N". 등가 ("N")) 왼쪽 부분이 참이고 오른쪽 부분이 거짓이고 AND가 모두 거짓이되고 사용자가 N 또는 Y를 넣었는지 while 조건이 맞지 않습니다. 생각합니다. 당신은 while 조건을 단순화시켜야한다. (OR) 연산자를 제거하고 NOT (!) 연산자를 제거하십시오.

관련 문제