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 尚未初始化。任何解决方案请原谅我一个不高兴的
答案 0 :(得分:5)
Java编译器不会确定至少有一个if
和else 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;