如果'启动价值?并在代码错误中使用它

时间:2014-07-10 21:35:35

标签: java if-statement

    System.out.println("\n What is the chemical symbol for water\n 1.HO2 \n 2.H20 \n 3.OOH \n 4. O2H");
    b = input.nextInt();
    if (b==2) {
        B=20;
    }
    else if (b != 2) {
        B=0;
    }

    **total= A+B;**
    switch (total) {    
        case 40:
            System.out.println("WOW You scored 40/40, you sure know your science");
            break;
        case 20:
            System.out.println("Meh,20/40.");
            break;
        case 0:
            System.out.println("0/40 Better luck next time!");
            break;
    }

我正在制作一个简单的mcq练习应用程序,它会根据正确答案的数量对用户进行评分。我用过if来给整数' A'和' B'根据答案的价值。但它在总计= A + B 时给出了 A 的错误(A已在早先的if语句中初始化) B 尚未初始化。任何解决方案请原谅我一个不高兴的

2 个答案:

答案 0 :(得分:5)

Java编译器不会确定至少有一个ifelse if实体将被执行,而B将被初始化,因此它认为如果两个条件都失败,那么B无法初始化。

您希望条件是对立的,因此只有一个条件为true,因此只需使用else。使用else而不是else if,编译器会看到B将在您稍后使用时始终初始化。

if (b==2)
    B=20;
else
    B=0;

答案 1 :(得分:1)

在if语句之前初始化B.

    B = 0;
    if (b==2)
        B=20;
    else if (!(b==2))
        B=0;
    total= A+B;

当然,如果你这样做,你不需要其他部分:

    B = 0;
    if (b==2)
        B=20;
    total= A+B;