我正在尝试打印出所有不是7或9的倍数的奇数。它的工作原理是,当除以2时,余数首先不是0,给出奇数。
但是当我把它放在显示数字的时候,如果它们不是7的倍数,它只显示所有的奇数,我是不是错了?
public class NoMultiples7and9 {
public static void main(String[] args) {
for (int i = 1; i <= 30; i++) {
if (i % 2 != 0) {
if (i % 7 != 0 || i % 9 != 0) {
System.out.println(i);
}
}
}
}
}发布于 2011-11-20 23:31:33
您内部的if语句是错误的,它将导致打印所有不能被7和9整除的奇数。我敢打赌,如果你改变你的循环到63,它不会打印63。也不需要初始%2检查。
public class NoMultiples7and9 {
public static void main(String[] args) {
for (int i = 1; i <= 30; i++) {
if (i % 7 != 0 && i % 9 != 0) {
System.out.println(i);
}
}
}
}发布于 2011-11-20 23:32:16
使用以下命令更改代码:
for (int i = 1; i <= 30; i = i + 2) {
if (i % 7 != 0 && i % 9 != 0) {
System.out.println(i);
}
}请注意,这里使用了&& ( and )而不是|| (OR)和无用的i % 2,因为只需稍微更改一下for循环,就可以对奇数进行循环。
发布于 2011-11-20 23:30:32
您需要在比较中使用AND而不是OR。在比较i % 7 != 0 || i % 9 != 0中,即使我mod 7是0,我mod 9可能不是,反之亦然。
https://stackoverflow.com/questions/8202537
复制相似问题