2014-04-14 5 views
-1

내 프로그램에서 특정 인덱스가 숫자인지 확인하고 확인해야합니다. 조건 나는 검사를 설정하고문자가 숫자가 아닌지 확인하십시오.

//Check to make sure all other characters are digits 
     else if (Character.isDigit(militaryTime.charAt(0))) 
     { 
      System.out.println(militaryTime + 
       " is not a valid miliary time."); 
     } 
     else if (Character.isDigit(militaryTime.charAt(1))) 
     { 
      System.out.println(militaryTime + 
       " is not a valid miliary time."); 
     } 
     else if (Character.isDigit(militaryTime.charAt(3))) 
     { 
      System.out.println(militaryTime + 
       " is not a valid miliary time."); 
     } 
     else if (Character.isDigit(militaryTime.charAt(4))) 
     { 
      System.out.println(militaryTime + 
       " is not a valid miliary time."); 
     } 

그러나, 나는 그것을 실행 문제를 실현 숫자를인지 결정했다, 그것은 유효한 것으로 가정되는 시간이 아니라는 것을 말한다. 그것이 깨달았을 때, 인덱스가 숫자인지 확인하고, 그렇다면 시간이 유효하지 않다는 것을 리턴합니다.

숫자가 아니며 잘못된 출력을 표시하도록하려면 어떻게해야합니까? 그렇지 않으면 그냥 움직이게 할 수 있습니까? 나는 isLetter를 시도했지만, 그것은 방금 내 프로그램을 추락시켰다.

+0

입력 내용은 무엇입니까? – djechlin

답변

3

사용을

if (!Character.isDigit(whatever)) 

을 그리고 당신은 사용하기 정말 간단 무언가를 원하는 경우 - 정규 표현식을 사용합니다 : !는 "없음"을 의미 ^\d{4}$ 정확하게 네 자리 숫자의 정규 표현식입니다.

업데이트 : 잘못된 시간을 잡으려면 더 복잡한 정규 표현식이 필요합니다. ^([01]\d\d\d|2[0-3]\d\d)$ 또는 Javas SimpleDateFormat을 사용하십시오.

+2

"HHmm"패턴을 사용하는'SimpleDateFormat'이 더 좋습니다. – SJuan76

+0

맞습니다. 정규 표현식은 잘못된 시간을 잡아 내지 못합니다. –

0

if 문장의 앞에 !을 사용하십시오.

// if militaryTime.charAt(0) is not a digit 
if (!Character.isDigit(militaryTime.charAt(0))) { 
    // ... 
} 
+0

뿐만 아니라 반환하지 않기 때문에 확인 후에도 처리가 계속됩니다. – Powerlord

관련 문제