2014-11-23 1 views
0

잘 모르겠다면 잘 모르겠지만 대답은 '예'인 사용자로부터 입력을 받고 싶습니다. '예'라고 대답 한 다음 'true'를 반환하려면 다음을 사용하십시오. 내 주요 방법.메서드에서 반환 된 부울 값을 사용하는 방법은 무엇입니까?

[Main Method] 
String inputFromUser = JOptionPane.showInputDialog(null, "Yes/No?"); 

checkBoolean(inputFromUser); 

if(inputFromUser = true) { 
System.out.println("Yes, true!"); } 

else if(inputFromUser = false) { 
System.out.println("No, false!"); } 

public static boolean checkBoolean(String inputFromUser) { 

boolean returnValue; 

if(inputFromUser.equals("yes")) { 
returnValue = true; } 

else { 
returnValue = false; } 
} 
return returnValue; 
} 

이 코드를 사용하면 inputFromUser = true를 수행하는 기본 메소드에서 호환되지 않는 유형이 발생합니다. 필수 문자열이지만 부울을 수신합니다.

error: incompatible types. if(inputFromUser = true) { required: String found: boolean

어떻게 정확히이 일을 할 수 있습니까? 이미이 사이트에 대한 답변이있을 수 있지만 질문을 정확하게 말하기는 어렵습니다.

+0

** inputFromUser **'의 String' 유형이고 ** 진정한 **'boolean'는'(참 inputFromUser =)', 경우입니다 당신은'String'에'true' 값을 할당하려고합니까? –

답변

2

변경

checkBoolean(inputFromUser); 

if(inputFromUser = true) { 
System.out.println("Yes, true!"); } 

else if(inputFromUser = false) { 
System.out.println("No, false!"); } 

if(checkBoolean(inputFromUser)) //This is same as if(checkBoolean(inputFromUser)==true) 
System.out.println("Yes, true!"); 
else 
System.out.println("No, false!"); 

의 사실과 "=="과 비교 할 필요가 부울 될 운명이 경우에도 기억하여 현재 코드에서는 Stringboolean에 할당하려고 시도합니다. 나는 당신이 그들을 비교하기를 원하는대로 ==을 의미한다고 생각합니다. 그러나 당신이 그것을 바꿔도 Stringboolean 값을 비교할 때 그것이 잘못되었습니다.

또한
boolean check = checkBoolean(inputFromUser); 

if(check) //This is same as if(check==true) 
System.out.println("Yes, true!"); 
else 
System.out.println("No, false!"); 

, 당신의 checkBoolean 방법은

를 사용하여 하나의 라인으로 단축 할 수있다 : 코드가 않습니다 아래에 또 다른 방법은 t는 boolean 변수에 메소드의 반환 값을 저장하고 if 국지적에서 사용할 것 먼저
return inputFromUser.equals("yes"); 
1

inputFromUser 변수의 유형이 String이고 부울과 비교하기 때문입니다.

boolean doContinue = checkBoolean(inputFromUser); 
if (doContinue) {//intead of if(inputFromUser = true) { 
    System.out.println("Yes, true!"); 
} 

을 그리고 유사하게 당신은 당신의 다른 조건을 변경할 수 있습니다 :

는 다음과 같은 작업을 수행 할 수 있습니다. 당신의 inputFromUser는 대신에 "="

1

, inputFromUser = true 변수 inputFromUser에 값 true을 할당 할당 문이다. 수표에 ==을 대신 사용해야합니다. 즉, inputFromUser이 부울 유형이라고 가정하면 inputFromUser == true이어야합니다 (이 경우 if(inputFromUser)으로 간단히 갈 수 있음을 알고 있음).

그러나 inputFromUserString이며이 오류는 컴파일 오류의 원인입니다. 당신은 변수에 checkBoolean의 반환 값을 할당하고 inputFromUser 대신 그것을 사용해야합니다

boolean answer = checkBoolean(inputFromUser); 
if(answer) { 
    System.out.println("Yes, true!"); 
} else { 
    System.out.println("No, false!"); 
} 

을 또는 당신은 checkBoolean를 사용하여 건너 갈 수 있습니다

if(inputFromUser.equals("yes")) { 
    System.out.println("Yes, true!"); 
} else { 
    System.out.println("No, false!"); 
} 
1

부울이에 다른 데이터 유형 끈. 단순히 'True'또는 'False'가 포함 된 문자열이 아닙니다.returnValue 변수에 부울 문자열을 할당하는 대신 true 또는 false를 반환하고 끝에있는 return 문을 제거하면됩니다. 이 방법을 사용하면 문자열이 아닌 부울 값만 처리하게됩니다.

0

코드의 첫 번째 줄을보십시오.

사용하는 데이터 유형은 String이지만 사용자가 부울 데이터 유형을 요청하고 있습니다.

은 프로그램 가서 부울로 변경 문자열 및 재 컴파일