首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java For-Loop错误

Java For-Loop错误
EN

Stack Overflow用户
提问于 2011-11-20 23:28:35
回答 4查看 578关注 0票数 0

我正在尝试打印出所有不是7或9的倍数的奇数。它的工作原理是,当除以2时,余数首先不是0,给出奇数。

但是当我把它放在显示数字的时候,如果它们不是7的倍数,它只显示所有的奇数,我是不是错了?

代码语言:javascript
复制
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);
                }
            }
        }
    }
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-20 23:31:33

您内部的if语句是错误的,它将导致打印所有不能被7和9整除的奇数。我敢打赌,如果你改变你的循环到63,它不会打印63。也不需要初始%2检查。

代码语言:javascript
复制
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);

            }
        }
    }
}
票数 1
EN

Stack Overflow用户

发布于 2011-11-20 23:32:16

使用以下命令更改代码:

代码语言:javascript
复制
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循环,就可以对奇数进行循环。

票数 3
EN

Stack Overflow用户

发布于 2011-11-20 23:30:32

您需要在比较中使用AND而不是OR。在比较i % 7 != 0 || i % 9 != 0中,即使我mod 7是0,我mod 9可能不是,反之亦然。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8202537

复制
相关文章

相似问题

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