繁体   English   中英

Java前循环错误

[英]Java For-Loop Error

我正在尝试打印不是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);
                }
            }
        }
    }
}

使用以下方法更改代码:

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循环来仅对奇数for循环。

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

您的内部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);

            }
        }
    }
}
for (i = 1; i <= 30; i++) {  
        if (i % 2 != 0) {
            if(i % 7 != 0) {
                if(i % 9 != 0)
                    System.out.println(i);
            }

        }
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM