2017-12-17 7 views
-1

두 개의 정수를 인수로 취하는 클래스의 메서드를 만들고 있습니다. 첫 번째 자릿수의 모든 자릿수를 확인하고 두 번째 자릿수보다 작거나 같은지 확인합니다.Java : 숫자의 모든 숫자가 범위 내에 있는지 확인하십시오.

public static boolean digitRange(int x, int limit) { 
    String number= Integer.toString(x); 
    char[] digits=number.toCharArray(); 
    boolean result=false; 
    for(char c: digits) { 
     if(Integer.parseInt(String.valueOf(c))>limit) { 
      result=false; 
     } 
    } 
    return result; 
} 

0, 5가 될 말에 대한 예상 출력 :

public static void main(String[] args){ 
    System.out.println(digitRange(0,5));//0 is les than or equal to 5. 
             //Therefore true is printed. 
} 

는 그러나, 나는 모든 단일 시나리오에서 거짓 무엇입니까 나는 이유를 찾을 수 없습니다. 누군가 digitRange 메서드를 수정하도록 도와 줄 수 있습니까?

답변

1
String number= Integer.toString(x); 
char[] digits=number.toCharArray(); 
boolean result=false; 
for(char c: digits) { 
    if(Integer.parseInt(String.valueOf(c))>limit) { 
     result=false; 
    } 
} 
return result; 

당신은 어디 trueresult을 설정하지 않습니다. 완전히 다른 접근 방식을, 그러나

boolean result=true; 

로 변경을 고려 :

public static boolean digitRange(int x, int limit) 
{ 
    int t = Math.abs(x); 
    while (t > 0) 
    { 
     if (t % 10 > limit) 
      return false; 
     t /= 10; 
    } 
    return true; 
} 
1

true로 결과 값을 설정하지 않습니다. 확인을 더 이상 할 필요가 없으므로 false를 설정하면 돌아오고, 반복에서 벗어나면 true를 반환하십시오.

public static boolean digitRange(int x, int limit) { 
    String number= Integer.toString(x); 
    char[] digits=number.toCharArray(); 

    for(char c: digits) { 
     if(Integer.parseInt(String.valueOf(c))>limit) { 
      return false; 
     } 
    } 
    return true; 
} 
0

함수는 각 자릿수 번째 숫자의 범위 및 모든 숫자는 두 번째 숫자보다 작은 경우 true를 반환 두 숫자와 점검을 허용 또는 false를 반환.

public boolean check(int one,int two){ 
    while(one>0){ 
     if(one%10>two) 
      return false; 
     one=one/10; 
    } 
    return true; 
} 
관련 문제