2016-11-17 3 views
0

그래서 military time format에 문자열이 있습니다. "1532"3:32 pm에 해당합니다. 시간 문자열의 각 숫자가 적절한 숫자인지 확인하는 메서드를 작성하려고합니다. 따라서 첫 번째 요소는 2보다 크거나 0과 같을 수 없습니다. 현재, 내 코드는 두 번째 로그 문을 지나치지 않고 도움을 줄 수 있기를 기대합니다!문자열의 값을 확인하는 방법은 무엇입니까?

건배!

String mOpen = "1532";     
Log.d("hoursTesting","pass1, length is > 2"); 
if(mOpen.getText().length() == 4) 
{ 
    Log.d("hoursTesting","pass2, length is == 4"); 
    char[] tempString = mOpen.getText().toString().toCharArray(); 
    if(tempString[0] != 0 && tempString[0] < 3) 
    { 
     Log.d("hoursTesting","pass3, first index is != 0 and < 3"); 
     if(tempString[0] == 1) 
     { 
      Log.d("hoursTesting","pass4, first index is 1"); 
      if(tempString[2] <= 5) 
      { 
       Log.d("hoursTesting","pass5, third index is <= 5, success!"); 
      } 
     } 
     else //tempString[0] is equal to 2 
     { 
      Log.d("hoursTesting","pass4, first index is 2"); 
      if(tempString[1] < 4) 
      { 
       Log.d("hoursTesting","pass5, second index is <3"); 
       if(tempString[2] <= 5) 
       { 
        Log.d("hoursTesting","pass6, third index is <= 5, success!"); 
       } 
      } 
     } 
    } 

} 
+0

디버깅을 시도 했습니까? 각 단계에서 일어나는 일을 시각적으로 볼 수 있다면 분명 할 것입니다. –

+0

윤초를 지원해야합니까? – Jasen

답변

3

tempString에는 숫자가 아닌 문자가 들어 있습니다. 즉 '0'이 아닌 0

가장 쉬운 해결 방법은 문자를 비교하는 것입니다. tempString[0] == '1' 또는 int digit1 = tempString[0] - '0';과 같은 작업을 수행 할 수 있습니다. 단, 문자열에 숫자가 포함되어 있다는 것을 이미 알고 있다고 가정합니다.

영리한 ASCII 남자들과 그 까다로운 캐릭터 세트는 '0' < '1' < '2' 등으로 설정되어 있으므로 if (str[0] < '2') 등으로 계속 말할 수 있습니다. 숫자 만 처리하면되므로 조심해야합니다.

개인적으로 나는 번호로 번호로 처음 2 개 문자 및 제 2 문자로 변환 것하고 만 0 < = 번호 1 < = 23 0 < = 번호 2 < = 59

+0

예. 문자열에 숫자가 있습니다. 감사합니다. 아프다. – TheQ

+0

하지만 char 값이 같지 않은지 확인하려면 어떻게해야합니까? – TheQ

1

당신은 확인 여기 INT와 문자를 비교 :

if(tempString[0] != 0 && tempString[0] < 3) 

그것은 다음과 같이 작동합니다 :

if(tempString[0] != '0' && tempString[0] < '3') 
1

내가 하위 문자열 것이다 t 그는 시간과 분 구성 요소를 확인한 다음 각각이 범위 내에 있는지 확인하십시오.

public boolean isTimeValid(String mOpen) { 
    int hours = Integer.parseInt(mOpen.substring(0, 2)); 
    int minutes = Integer.parseInt(mOpen.substring(2)); 

    if ((hours >= 0 && hours <= 24) && (minutes >= 0 && minutes <= 59)) { 
     return true; 
    } 
    else { 
     return false; 
    } 
} 
관련 문제