我被要求编写一个程序,在1-10之间取5个数字,并找出其中有多少是偶数,有多少是奇怪的使用Switch-Case语句的自由落体方法。我已经编写了代码,并且我在本地范围内声明了变量,其中相同的开关案例所在,所以我认为这不是块范围的问题。如果数字是奇数(1,3,5,7,9),则奇数计数器变量(oc)递增。偶数数字也是如此。如果数字不在范围内,则打印“INVALID Entry”(它继续,并且不会破坏程序)。
import java.util.*;
public class Even {
public static void main(String[] args){
Scanner sc = new Scanner(System.in); int n= 0; int ec, oc = 0;
for (int i = 1; i<=5; i++){
System.out.println("Enter a number");
n = sc.nextInt();
ec= 0; oc = 0;
switch(n){
case 1: oc = 0;
case 3:
case 5:
case 7:
case 9: oc++; break;
// Now Even
case 2: ec = 0;
case 4:
case 6:
case 8:
case 10: ec++; break;
default: System.out.print("Invalid Entry");
}
}
System.out.println("Total number of even integers: " + ec + " and odd integers " + oc);
}
}
问题是,它给出了错误:“ec可能没有被初始化”在程序结尾处的这一行:“System.out.println(”偶数整数:“+ ec +”和奇数整数“+ oc);”。
为什么会出现此错误?怎么能解决这个问题呢?对不起,如果这看起来很傻,我是新手,我的目的是学习。非常感谢!
答案 0 :(得分:0)
靠近你有这条线的顶部 -
Scanner sc = new Scanner(System.in); int n= 0; int ec, oc = 0;
将int ec
更改为int ec=0
Scanner sc = new Scanner(System.in); int n= 0; int ec=0, oc = 0;
另外,你应该在不同的行上发表所有陈述 -
Scanner sc = new Scanner(System.in);
int n= 0;
int ec, oc = 0;
答案 1 :(得分:0)
,初始化变量ec
:
Scanner sc = new Scanner(System.in);
int n= 0;
int ec = 0, oc = 0;
答案 2 :(得分:0)
编译器要求初始化局部变量,以便它不会意外地尝试读取未明确赋值的值。
在循环中分配值时,编译器在System.out.println
所在的范围内找不到初始化,因此它仍会抱怨。只需在您声明的地方初始化 ec 变量。
答案 3 :(得分:0)
原因是ec
在for
循环内被初始化,这可能永远不会从编译器的角度执行。在int ec, oc = 0;
语句中,oc
仅初始化0
。