2012-01-11 3 views
1
if ((clearance.equals("")) || (!clearance.equals("0")) || (!clearance.equals("1"))){ 
    System.out.println("Invalid entry, exiting.\n"); 
    System.exit(0); 
} 

그러나 0 또는 1을 입력하면 "잘못된 항목, 종료 중"이 계속 인쇄됩니다.String.equals()가있는 If 문

어떤 아이디어가 잘못 되었나요?

+0

여유 공간은 String 유형입니다. 나는 값을 출력 할 수 있고 0이나 1을 보여 주지만 if 문은 그것을 건너 뛰는 것처럼 보입니다. –

+0

각 인스턴스 i는 0 또는 1 중 하나만 입력하십시오. –

+0

그 전에 몇 줄을 게시하십시오. 깨끗함이란 무엇인가? if에 들어가기 직전에 청산의 가치는 무엇입니까? – sfratini

답변

12

조건 읽어야합니다

if (!clearance.equals("0") && !clearance.equals("1")) { 

현재 표현은 항상 true 평가 (때문에 어떤 문자열은 '0', '1'과 동일하지 않다).

+1

첫 번째'|| '가 필요할 수 있다는 점을 제외하고 (명령문이 다시 작성되는 방식에 따라). –

+0

@hotlicks 그 코멘트를 주셔서 감사합니다 ... 지금은 작동합니다 ... –

+0

@aix 분명히 해 주셔서 고마워요, 논리에 의아해하며, 45mins 동안이 if 루프에 갇혀 있어요! 도와 줘서 고맙다. –

1

논리가 잘못되었습니다.

if ((clearance.equals("")) || ((!clearance.equals("0")) && (!clearance.equals("1")))){

+0

감사합니다! 내 실수를 깨달았다 .. –

0

그것에 대해 생각 : 당신은 clearance != "0" 경우 또는 clearance != "1" 경우 오류 메시지를 인쇄하는 것입니다. 그 중 하나가 항상 사실 일 것입니다.

+1

감사 ... 내 논리는 건초를 갔다 ... 그 230am 여기 .. ​​도와 주셔서 감사합니다. –

0

클리어런스가 "1"이면 "0"이 아니므로 거기에서 단락되며 값이 참입니다. 허가가 0이면 1이 아니므로 진술 내용이 참입니다.

+0

대답 주셔서 감사합니다 .. Logged –