我试图创建一个java程序,该程序接受用户给出的数字,并显示它是奇数还是偶数。我遇到了麻烦,我想我的逻辑可能是错误的。它只打印永无止境的消息" odd"
import java.util.Scanner;
public class Questions {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Your number");
int number = input.nextInt();
for (int i = 0; i <= number; i = +2)
if (number == i) {
System.out.println("even");
} else {
System.out.println("odd");
}
}
}
答案 0 :(得分:1)
您有一个无休止的for
语句,因为您没有更改循环变量i
。您可以尝试以下代码来决定您的任务:
System.out.println(number % 2 == 0 ? "even" : "odd");
或
System.out.println((number & 1) == 0 ? "even" : "odd");
这些行会得到相同的结果:
(number = 2)
even
当然,在您的情况下,您可以将此行for (int i = 0; i <= number; i = +2)
更改为下一行for (int i = 0; i <= number; i += 2)
,但输出不会产生预期结果:
(number = 2)
odd
even
答案 1 :(得分:1)
在你的for循环中你有了分配
i =+ 2
这会将变量i
设置为正2。
要为变量添加2,请使用:
i += 2
这将打印&#34; odd&#34;只要i
小于输入值并打印最终的&#34;偶数&#34;如果值是事件或&#34;奇数&#34;如果值是奇数。
请测试一个值是否是您可以使用的另一个值的倍数
if ((value % otherValue) == 0) {}
所以在你的例子中
if ((number % 2) == 0) {
System.out.println("even");
} else {
System.out.println("odd");
}
甚至更短
System.out.println((number % 2) == 0 ? "even" : "odd");
答案 2 :(得分:1)
您检查奇数/偶数是错误的,可以进行优化。请改用模数运算符:
DialogPlayer
模数为您提供操作数除法的余数。如果除以2而余数为0 - 则为偶数。
答案 3 :(得分:1)
你在for语句中犯了错误
for (int i = 0; i <= number; i = +2)// this will not increment the counter, it will set it every time with 2 positive
for (int i = 0; i <= number; i +=2)// this will increment the counter by 2 in every iteration
你也应该尝试通过调试或在循环之后使用一些打印语句来找到问题,或者处理这个问题。
答案 4 :(得分:1)
该程序永远不会终止。
for(int i = 0; i <= number; i=+2)
违规代码是最后一项。将i递增2看起来像这样:
i += 2;
如果你这样写:
i =+ 2;
然后它会重复分配值&#39; 2&#39;我。
当然,正如其他海报已经指出的那样,这不是你应该如何测试均匀度/奇数。您应该执行模数检查:
if(i % 2 == ) <even>
else <odd>
或者只是对最后一位数进行逐位比较。
if(i & 1 == 0) <even>
else <odd>