Java 而循环不会退出或显示结果
家庭作业:我被要求创建一个方法来计算从1到分配给变量的值的所有奇数,但它必须有一个while循环 我一直在用模来确定它是偶数还是奇数。我尝试过识别奇数,然后只使用+2。我怀疑这是一个简单的逻辑错误,我不太明白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
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两次。我感谢你的帮助。