Java:检查数字的每个数字是否在一个范围内

问题描述 投票:-1回答:3

我正在创建一个类的方法,它将两个整数作为参数。它检查第一个数字的每个数字,并确保它们小于或等于第二个数字。

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方法。

java arrays loops boolean
3个回答
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;
}

1
投票

您永远不会将结果值设置为true。只要你已经建立了错误就可以返回,因为你不再需要检查,如果你离开了迭代,则返回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;
}
© www.soinside.com 2019 - 2024. All rights reserved.