检测number是7的倍数还是包含数字7

时间:2014-03-23 19:16:14

标签: java

我读了一本关于Java挑战的书,它提出了下一个问题:

创建一个函数,该函数获取一个数字作为参数,并检测number是7的倍数还是包含数字7。

签名是:public boolean find7(int num)

我创建此函数,当数字在0到99之间时,由下一个条件:

if (num mod 7 == 0 || num / 10 ==7 || num mod 10 == 7)
   return true;

但是大于99的数字呢?像177,或709?我该如何检测它?

6 个答案:

答案 0 :(得分:5)

最好不要将字符串排除在外:

public static boolean check(final int n) {
    int m = Math.abs(n);
    while (m > 0) {
        if (m % 10 == 7)
            return true;

        m /= 10;
    }

    return n % 7 == 0;
}

while - 循环检查每个数字并测试它是否为7;如果是,我们返回true,如果不是,我们继续。只有当数字都不是7时,我们才会到达最终的返回语句,此时我们将返回该数字是7的倍数。

答案 1 :(得分:2)

if (num % 7 ==0 || ("" + num).contains("7") ){
    return true;
}

答案 2 :(得分:2)

您可以将方法扩展到100以上的数字,如下所示:

public boolean find7(int num) {
    // support for negative integers
    num = Math.abs(num);

    // check if num is a multiple of 7
    if (num % 7 == 0) {
        return true;
    }

    // check to see if num contains 7
    while (num > 1) {
        // if the last digit is 7, return true
        if (num % 10 == 7) {
            return true;
        }

        // truncate the last digit
        num /= 10
    }

    // the number is not a multiple of 7 and it does not contain 7
    return false;
}

答案 3 :(得分:1)

您可以执行以下操作

    if(Integer.toString(num).contains("7") || ...){

    }

答案 4 :(得分:0)

至于检查数字是否可以被7整除,你没事。 如果你想检查它是否包含7位数,我认为最简单的方法是将数字视为字符串:

public boolean find7(int num) {
    // check if it's a multiple of 7:
    if (num % 7 == 0) {
        return true;
    }

    // if it's not, check if it contains the character 7:
    return String.valueOf(num).contains("7");
}

答案 5 :(得分:0)

用于检测数字是7的倍数:

boolean isMultiple = x % 7 == 0

用于检测数字:

将其转换为String并使用String.contains()

像这样创建数字List

private List<Integer> getDigitList(int number){
        List<Integer> list = new ArrayList<Integer>();

        int leftover = number;
        while (leftover != 0){
            int result = leftover % 10;
            leftover = (leftover - result)/10;
            list.add(result)
        }
        assert leftover == 0;

        return list;
    }