2010-03-05 6 views
0

질문에 사용자 입력의 유효성을 검사하도록 루프를 만들었으므로 추가 할 때까지 제대로 작동했습니다. 이연결할 수없는 문

 if (userInput.charAt(2) !='-') 
     { 
      System.out.println("Error, " + userInput + " is an invalid move."); 
      continue; 
     } 

전에

 if (userInput.charAt(0) > NUMCOLS && userInput.charAt(0) < 0); 
     { 
      System.out.println("Error, " + userInput + " is an invalid move."); 
      continue; 
     } 

나는 오류가 이것이 도달 할 수없는 문이 아니라는 얻을 이제 때마다 나는 컴파일하려고, 어떤이의 원인?

답변

10

'가짜'가 있습니다. 추가 된 코드의 첫 번째 줄에 첫 번째로 continue;이 실행됩니다.

3

이 두 조건은 동시에 true가 될 수 없으며 컴파일러는이를 알고 있습니다.

큰 소리로 그것을 읽어

를 사용자 입력의 첫 번째 문자가 NUMCOLS 그 미만이 0보다 큰 경우! NUMCOLS가 0 이상이면 두 번째 조건이 동시에 참일 수 없으며 그 반대의 경우도 마찬가지입니다.

+0

OK 이후 - 나는 이것이 당신의 컴파일 오류의 원인 것에 대해 틀렸다을하지만 논리는 잘못된 보인다 . 같은 조건을 어떻게 동시에 실현할 수 있습니까? –

+0

사실 이것은 다음에 실행 한 문제입니다. 여기서 제가 테스트하고있는 것이 있습니다. if (userInput.charAt (0) <0 && userInput.charAt (0)> (NUMCOLS + 1)) 내가하려는 것은 체커 게임을 만드는 것입니다. 플레이어가 입력 한 숫자는 1에서 8 사이의 숫자입니다. NUMCOLS는 바둑판 크기를 결정하는 데 사용되는 변수입니다 (이 경우 7이지만 보드가 0-7 대신 1-8로 그려 지므로 추가 1 to NUMCOLS) 내가 입력 한 내용에 상관없이 항상 조건에 false를 반환하고 오류를 건너 뜁니다 ... – Troy

+0

그래서 원하는 것은 userInput.charAt (0)> = 1 && userInput.charAt (0) <9) –

3

if 테스트가 비어 있습니다.

그래서 아래의 코드는 항상 실행되고, 거기에 다음과 같은 지침이 실행되지 않습니다되는 continue 코드 ..

관련 문제