2015-01-30 7 views
0

그래서 사용자가 부울로 대답을 입력하고 오류를 확인하도록 시도하고 있지만 작동하지 않는 것 같습니다. 올바른 방향으로 가고 있습니까, 아니면 이것을 할 수있는 더 좋은 방법이 있습니까? 나는 "거짓"나는 "true"로하고 지정이 다른 문자열에 대해 그것을 확인 만 입력 문자열입니다 그 일을하고 생각 만했던 내 while 루프 :자바 부울 입력 오류 검사

while (!continueGame.equalsIgnoreCase(answerTrue) && !continueGame.equalsIgnoreCase(answerFalse)) {  
     System.out.println("Would you like to try again? (true/false)"); 
     continueGame = keyboard.nextBoolean(); 
     System.out.println(); 
    } 

중 하나가 작동하지 않았다. 나는 그것이 내 안의 것과 관련이 있다고 확신하지만, 나는 왜 확신하지 못한다. 어쨌든, 문자열 대신 boolean을 사용하여 오류를 검사하는 방법은 다음과 같습니다. 문자열 버전은 기본적으로 동일한 방법 이었지만 문자열에 대해 수정되었습니다.

public static boolean continueGame() { 
    boolean continueGame; 

    System.out.println("Would you like to try again? (true/false)\n"); 
    continueGame = keyboard.nextBoolean(); 
    System.out.println(); 

    while (continueGame != true && continueGame != false) {  
     System.out.println("Would you like to try again? (true/false)"); 
     continueGame = keyboard.nextBoolean(); 
     System.out.println(); 
    } 
    if (continueGame) { 
     return true; 
    } 
    else { 
     System.out.println("We accept your surrender."); 
     return false; 
    } 

} //End continueGame method 
+0

정확하게 작동하지 않는 것에 대해 더 구체적으로 설명 할 수 있습니까? 또한 코드를 더 건조하게 유지하려면 사후 점검 루프를 사용하고 루프 전에 블록을 제거하는 것이 좋습니다. – mstbaum

+0

[이 답변] (http://stackoverflow.com/questions/28244832/java-loop-not-resetting/)을보고 도움이되는지 확인하십시오. continueGame! = true && continueGame! = false로 부울 값이 "참이 아니고 거짓이 아닌가?"때문에 이상한 일을하고 있습니까? 부울은 true 또는 false이고, 확장은 true 또는 false가 아닙니다. – MarsAtomic

답변

0

기본적으로 루프가 작동하는 방식을 바꿔서 조건을 위반할 수 있습니다. 그들은 유효한 부울을 입력 할 때까지

import java.*; 
import java.util.Scanner; 

public class Loop 
{ 
public static void main(String[] args) 
{ 
    boolean continueGame=true; 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Would you like to try again? (true/false)\n"); 
    continueGame = keyboard.nextBoolean(); 

    while (continueGame) { 
    System.out.println("Would you like to try again? (true/false)"); 
    continueGame = keyboard.nextBoolean(); 
    if(!continueGame) 
    { 
     System.out.println("We accept your surrender."); 
    } 
    } 
} 
} 
+0

나는 이것이 OP가 원했던 것을 성취했다고 생각하지 않는다. 사용자가 다른 것을 입력하면 계속 true/false를 묻고 싶어한다고 생각하지만 확인하길 원합니다. – mstbaum

0
while(true) { 

    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Would you like to try again? (true/false)"); 

    if(keyboard.hasNextBoolean()){ 
     continueGame = keyboard.nextBoolean(); 
     System.out.println(); 
     break; 
    } 

} 

이 은 무기한 참/거짓에 대한 사용자 메시지가 표시됩니다. 그런 다음 루프에서 빠져 나와 나머지 코드를 계속 진행할 수 있습니다.