初始化两个整数变量并将它们设置为零。循环遍历数组中的每个项目并进行计算以确定数字是偶数还是奇数(使用模数运算符)。使用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
答案 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个状态,偶数或奇数(0
或1
)。因此,您的“无偶数或奇数”的打印语句没有意义。
我也不确定你在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.");
}