奇数偶数使用Switch无需用户输入

时间:2015-11-10 01:46:32

标签: java switch-statement modulus

初始化两个整数变量并将它们设置为零。循环遍历数组中的每个项目并进行计算以确定数字是偶数还是奇数(使用模数运算符)。使用switch语句,为所有偶数递增一个变量,对任何奇数用另一个变量做同样的操作(使用递增运算符)。
将偶数和关数的总数输出到屏幕。

示例输出:

34, 53, 125, 854 8, 1045, 66, 9434, 5205, 235
There are 5 even numbers.
There are 5 odd numbers.

这是我的代码

public class Switch {
    public static void main(String[] args) {
        // TODO Auto-generated method stub


        int n = 0;
        int e = 0, o = 0;

         for( n = 5; n < 50; n++)

         {

            if(n % 2 == 0)
                     System.out.println(n);


       //e= 0; o = 0;

          switch(n){
                case 1: o = 0;
                case 3:
                case 5:
                case 7:
                case 9: o++; break;
                // these are Even
                case 2: e = 0;
                case 4:
                case 6:
                case 8:
                case 10: e++; break;

                default: System.out.println("no odd or even numbers");
            }
        }
        System.out.println("You have " + e + " even numbers:  and you have odd numbers " + o);
    }
}

以下是我的错误。

no odd or even numbers
48
no odd or even numbers
no odd or even numbers
You have 3 even numbers:  and you have odd numbers 3

1 个答案:

答案 0 :(得分:3)

原始代码的主要问题是switch(n)语句。这(大致)等同于说

if (n == 1) {
    o = 0;
} else if (n == 2) {
    e = 0;
}
if (n == 3 || n == 5 || n == 7 || n == 9) {
    o++;
}
else if (n == 4 || n == 6 || n == 8 || n == 10) {
    e++;
}
else {
    System.out.println("no odd or even numbers");
}

我相信你可以看到该代码有什么问题,我希望它能解释你的初始输出。

你循环的范围是5到50,因此你的3个偶数是6,8和10,你的3个奇数是5,7和9.所有偶数都打印了,其余的都是打印的为no odd or even numbers

这是一个基于您的问题的工作解决方案。

请注意,数字只有2个状态,偶数或奇数(01)。因此,您的“无偶数或奇数”的打印语句没有意义。

我也不确定你在5到50之间用循环做什么......

 public static void main(String[] args) {

        int[] nums = new int[] {34, 53, 125, 854, 8, 1045, 66, 9434, 5205, 235};

        int e = 0, o = 0;

        for(int i = 0; i < nums.length; i++)
        {
            int remainder = nums[i] % 2;

            switch(remainder){
                case 0:
                    e++;
                    break;
                case 1:
                    o++;
                    break;
                default:
                    break;
            }
        }
        System.out.println("There are " + e + " even numbers. There are " + o + " odd numbers.");
    }