甚至整数和奇数整数都与Switch Case有关

时间:2014-12-07 06:40:34

标签: java int switch-statement

我被要求编写一个程序,在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);”。

为什么会出现此错误?怎么能解决这个问题呢?对不起,如果这看起来很傻,我是新手,我的目的是学习。非常感谢!

4 个答案:

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

在for循环之前

,初始化变量ec

Scanner sc = new Scanner(System.in); 
int n= 0; 
int ec = 0, oc = 0;

答案 2 :(得分:0)

编译器要求初始化局部变量,以便它不会意外地尝试读取未明确赋值的值。

在循环中分配值时,编译器在System.out.println所在的范围内找不到初始化,因此它仍会抱怨。只需在您声明的地方初始化 ec 变量。

答案 3 :(得分:0)

原因是ecfor循环内被初始化,这可能永远不会从编译器的角度执行。在int ec, oc = 0;语句中,oc仅初始化0