我读了一本关于Java中的挑战的书,它给出了下一个问题:
创建一个函数,该函数获取一个数字作为参数,并检测数字是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?我怎么能察觉到呢?
发布于 2014-03-23 19:24:06
最好不要插手这件事:
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的倍数。
发布于 2014-03-23 19:21:33
if (num % 7 ==0 || ("" + num).contains("7") ){
return true;
}发布于 2014-03-23 19:26:07
您可以将您的方法扩展到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;
}https://stackoverflow.com/questions/22595750
复制相似问题