Java 而循环不会退出或显示结果

Java 而循环不会退出或显示结果,java,loops,methods,Java,Loops,Methods,家庭作业:我被要求创建一个方法来计算从1到分配给变量的值的所有奇数,但它必须有一个while循环 我一直在用模来确定它是偶数还是奇数。我尝试过识别奇数,然后只使用+2。我怀疑这是一个简单的逻辑错误,我不太明白 public static void sumOddNumber(int number){ int counter =1; while (counter <= number){ if (counter % 2 !=0){ Sy

家庭作业:我被要求创建一个方法来计算从1到分配给变量的值的所有奇数,但它必须有一个while循环

我一直在用模来确定它是偶数还是奇数。我尝试过识别奇数,然后只使用+2。我怀疑这是一个简单的逻辑错误,我不太明白

public static void sumOddNumber(int number){

    int counter =1;

    while (counter <= number){
        if (counter % 2 !=0){
            System.out.println (+ number);
            counter++;
        }
    }

}
我的期望是它将计数器与用户定义变量的数字进行比较,并继续执行模数运算并打印结果,直到计数器超过数字。然而,当我输入一个数字时,它只是打印该数字并不断地磨开。

同意@forpas,您的计数器++只被调用一次

试试这个

public static void printOddNumber(int number){

    int counter = 1;

    while (counter <= number) {

        if (counter % 2 !=0) {

            System.out.println(counter);
        }
        counter++;
    }
}
从可读性的角度来看,这是一个更好的答案

public static void printOddNumber(int number){

    int counter = 1;

    while (counter <= number) {

        if (isOddNumber(counter)) {

            System.out.println(counter);
        }
        counter++;
    }
}

public static boolean isOddNumber(int number) {

    return number % 2 != 0;
}

一旦我将counter++语句从循环中移除,我就开始接收正确的迭代次数,但都显示了我输入的次数。我只需要更改我的System.out.println来显示正确的变量,在本例中是“counter”而不是像我一样的“number”。我的方法最终看起来像hooknc提出的第一个示例。谢谢大家的帮助

尝试在System.out.printlnuntil counter Overses number中删除+如果if块中有计数器+,计数器将不会超过该数字。感谢您的快速评论。我输入了25号,终端显示25号,然后继续旋转。通过从if语句中取出计数器,它现在终止,并执行我想要的大部分操作。我输入数字12,它会吐出12 6次。我输入3,它返回3两次。我感谢你的帮助。