首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测数字是7的倍数还是包含数字7

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

Stack Overflow用户
提问于 2014-03-23 19:16:14
回答 6查看 3K关注 0票数 2

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

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

签名是:public boolean find7(int num)

当数字介于0到99之间时,我将根据下一个条件创建这个函数:

代码语言:javascript
复制
if (num mod 7 == 0 || num / 10 ==7 || num mod 10 == 7)
   return true;

但是,如果数字大于99,那又是什么呢?比如177还是709?我怎么能察觉到呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-03-23 19:24:06

最好不要插手这件事:

代码语言:javascript
复制
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-loop检查每个数字并测试它是否为7;如果是,则返回true,如果不是,则继续。只有在没有一个数字是7的情况下,我们才会到达最终返回语句,此时我们将返回该数字是否为7的倍数。

票数 5
EN

Stack Overflow用户

发布于 2014-03-23 19:21:33

代码语言:javascript
复制
if (num % 7 ==0 || ("" + num).contains("7") ){
    return true;
}
票数 2
EN

Stack Overflow用户

发布于 2014-03-23 19:26:07

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

代码语言:javascript
复制
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;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22595750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档