有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

if语句Java ForLoop错误

我试着打印出所有不是7或9的倍数的奇数。它的工作原理是,当余数被二除时,先看余数是否不是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);
                }
            }
        }
    }
}

共 (4) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

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

    使用以下命令更改代码:

    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循环,只能循环奇数

  4. # 4 楼答案

    如果你的内在陈述是错误的,它将导致所有不能被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);
    
                }
            }
        }
    }