有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

数组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. 
} 

然而,我在每一个场景中都会出错,我找不到原因。 有人能帮我纠正一下数字范围法吗


共 (3) 个答案

  1. # 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;
    

    你从未将result设置为true任何地方。换成

    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;
    }
    
  2. # 2 楼答案

    该函数接受两个数字,并检查每个数字是否在第二个数字的范围内,如果所有数字都小于第二个数字,则返回true,否则返回false

    public boolean check(int one,int two){
        while(one>0){
            if(one%10>two)
                return false;
            one=one/10;
        }
        return true;
    }
    
  3. # 3 楼答案

    您从未将结果值设置为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;
    }