如何确定输入的整数是否包含某些数字而不使用字符串

时间:2018-04-04 22:08:34

标签: 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 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;
}

3 个答案:

答案 0 :(得分:0)

我知道解决这个问题的最佳方法是使用%。 %或Modulus返回一个数字的余数/另一个数字。例如,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;
}

希望这有助于

答案 1 :(得分:0)

通过在数字上调用模块10,您可以检索此数字的最后一位数字 在num上执行,然后在num/10上执行,然后在num/100上执行,直到您迭代所有数字(即分割结果为> 0时)。

你可以写:

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

请注意,布尔变量无能为力 您希望在数字等于true时立即返回x,因此return true直接在条件语句块中返回return false;并在while语句后返回{{1}}。 / p>

答案 2 :(得分:0)

此代码也适用于contains(0,0):

boolean contains (int num, int x) {
    do {
        if (num % 10 == x){
            return true;
        }
        num /= 10;
   } while (num > 0);
   return false;
}

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