【问题标题】:initialization after switch-statement [duplicate]开关语句后的初始化[重复]
【发布时间】:2015-12-20 15:11:21
【问题描述】:

为什么它说'decimalNum'可能还没有被初始化,尽管它在switch语句中的一种情况下已经被初始化了?

    Scanner  s = new Scanner(System.in);

    char romeDigit;
    int decimalNum;
    boolean  inputValid = true;

    System.out.println("Please enter a rome digit: ");
    romeDigit = s.next().charAt(0);

    switch (romeDigit)  {
        case 'i':
        case 'I':
            decimalNum = 1;
            break;
        case 'v':
        case 'V':
            decimalNum = 5;
            break;
        case 'x':
        case 'X':
            decimalNum = 10;
            break;
        default:
            inputValid = false;
            break;
    }

    if (inputValid)
        System.out.println**("Num is" + decimalNum);**
    else
        System.out.println("Invalid input!");

【问题讨论】:

    标签: java eclipse initialization switch-statement


    【解决方案1】:

    在某些情况下,初始化decimalNum 是不够的。在所有情况下都必须初始化它,包括默认情况。

        default:
            inputValid = false;
            decimalNum = -1; // it doesn't really matter what you put here, since
                             // you are using a flag to determine if the value is valid
            break;
    

    【讨论】:

      【解决方案2】:

      或者只是添加 int decimalNum=0;在哪里声明变量以避免错误

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        • 1970-01-01
        • 1970-01-01
        • 2010-11-25
        相关资源
        最近更新 更多