为什么我的偶数和奇数打印程序打印只打印多次?

时间:2015-08-19 20:28:21

标签: java printing

我试图创建一个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");
      }
  }
}

5 个答案:

答案 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>