奇偶数在没有用户输入的情况下使用 Switch

Odd Even Numbers Using Switch without user input

初始化两个整数变量并将它们设置为零。遍历数组中的每个项目并进行计算以确定数字是偶数还是奇数(使用模数运算符)。使用 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

原始代码的主要问题是 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)。因此,您的 "No even or odd number" 打印语句没有意义。

我也不确定你在从 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.");
    }