Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不使用字符串的情况下确定输入的整数是否包含某些数字_Java_While Loop_Integer_Boolean - Fatal编程技术网

Java 如何在不使用字符串的情况下确定输入的整数是否包含某些数字

Java 如何在不使用字符串的情况下确定输入的整数是否包含某些数字,java,while-loop,integer,boolean,Java,While Loop,Integer,Boolean,在这个程序中,我应该计算出用户输入的整数是否包含某个数字(在本例中为7和3),然后返回一个布尔值。到目前为止,我已经: public static boolean contains(int num, int x) { Scanner input = new Scanner(System.in); int currentLength = numberDigits(num); //method that counts the number of digits in the input

在这个程序中,我应该计算出用户输入的整数是否包含某个数字(在本例中为7和3),然后返回一个布尔值。到目前为止,我已经:

public static boolean contains(int num, int x) {
    Scanner input = new Scanner(System.in);
    int currentLength = numberDigits(num); //method that counts the number of digits in the inputed integer

    int digit;   // current first digit

    int firstNumber = firstNum(num);
    boolean digitTrue = false;   

    while (currentLength > 0 ) {
        digit = firstNumber;
        if (num == x)
        {
            digitTrue= true;
        } else {
            digitTrue= false;
        }
    }
    return digitTrue;
}

据我所知,解决这个问题的最佳方法是使用%.%或模数返回一个数/另一个数的余数。例如,5%2=1或355%10=5。如果你只想检查一个大的数字,我建议你用这个方法

public static boolean contains(int num, int x){

while(num >= 0){
    if (num % 10 == x){
        return true;
    }
    if (num > 0){
        num = num / 10;
    }else{
        return false;
    }
}
return false;
}

希望通过调用模块10来检索此号码的最后一位数字,这对您有所帮助。
num
上执行,然后在
num/10
上执行,然后在
num/100
上执行,直到迭代所有数字(即除法结果>0)

你可以这样写:

int currentNumber = num;
while (currentNumber > 0 ) {
    if (currentNumber % 10 == x){
        return true;
    }
    currentNumber = currentNumber / 10;
}
return false;
请注意,布尔变量是无效的。

只要一个数字等于
x
,就要返回
true
,因此
直接在条件语句块中返回true
,然后
返回false
while
语句之后。

此代码对于contains(0,0)也能正确工作:


对于x>9或x<0,您必须编写一个保护语句,对于num(和/或x)<0,您应该首先使用Math.abs。

对于
包含(0,0)
失败,这对我来说似乎是一个合理的问题。事实上,这是一个可能需要处理的极端情况。您建议的
do/while
或循环之前的条件语句可以执行此任务:
if(num==0&&x==0){return true;}
失败,因为
包含(0,0)
,这对我来说似乎是一个合理的问题。可能重复
boolean contains (int num, int x) {
    do {
        if (num % 10 == x){
            return true;
        }
        num /= 10;
   } while (num > 0);
   return false;
}