2016-10-02 4 views
0

이것은 내 프로그램에 "true"또는 false " 을 삽입하라고 요청하는 부분입니다.하지만 계속해서 java unexpected return value을 얻는다면이 문제를 해결할 방법을 찾을 수 없습니다. returnmain 방법 값으로자바 예기치 않은 반환 값

private String Reply() { 
    Scanner input_reader = new Scanner(System.in); 
    System.out.print("true or false"); 
    String keyboard = null; 
    keyboard = input_reader.nextLine(); 

    while (keyboard != "True" | keyboard != "False") { //if the user dosent type true or false it will continue to ask for it 
     System.out.print("Please answer with T or F "); 
     Scanner newInput = new Scanner(System.in); 
     String a = newInput.nextLine(); 
     keyboard = a; 
     return keyboard; 

    } 
} 

병이 모든 도움을 주셔서 감사합니다! 감사합니다!

+0

당신은 == 또는으로 개체를 비교! =이 경우. #equals를 대신 사용하십시오. –

+0

먼저 equal() 함수로 문자열 비교 while while 루프에서 return 문 사용 ... 조건이 실패하면 루프가 자동으로 중지됩니다. 값을 반환하는 이유는 무엇입니까 ?? – RohitS

+0

반환 방법은 사용자의 메서드에서 마지막 문이어야합니다. – RohitS

답변

1
  • 를 사용하여 문자열 API를, 등호 또는 equalsIgnoreCase 방법을 사용.이 끝까지 == 때문이다 연산자는 두 엄격한 ob jects는 해당 객체의 값이 아니라 동일합니다. .equals 메서드는 문자열 값 비교를 수행하기 위해 작성됩니다.
  • 로직이 항상 true를 반환하도록 설정되었습니다. OR 연산자를 사용하면 문자열은 항상 '참'이 아니거나 '거짓'이 아닙니다.
  • 또한 while 루프에서 return 문을 이동하려는 것이다

    는, 당신은 값을 반환하지해야하기 때문에 당신은 반복 할 때까지 :

    while (!(keyboard.trim().equalsIgnoreCase("True") || keyboard.trim().equalsIgnoreCase("False"))) { //if the user dosent type true or false it will continue to ask for it 
        System.out.print("Please answer with True or False "); 
        Scanner newInput = new Scanner(System.in); 
        String a = newInput.nextLine(); 
        keyboard = a;   
    } 
    return keyboard;