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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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方法。

答案
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;
}
另一答案

您永远不会将结果值设置为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;
}
另一答案

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

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

以上是关于Java:检查数字的每个数字是否在一个范围内的主要内容,如果未能解决你的问题,请参考以下文章

有没有更好的方法来检查一个数字是不是是两个数字的范围

循环数字并评估数字是否可以被某些数字整除

在指定数字范围内,随机获取n个不重复数字

如何检查IP地址在PHP的两个IP范围内?

免费代码阵营算法

检查邮政编码是不是在范围内