为什么message5输出即使当courseNum等于103或206?我认为它与最后一个else语句的位置有关,但是我已经尝试过移动它并获得了结果,其中message5将在所有if语句中输出。
if (courseNum == 103)
{
JOptionPane.showMessageDialog(null,message1);
}
if (courseNum == 206)
{
JOptionPane.showMessageDialog(null,message4);
}
if (courseNum == 106)
{
answer = JOptionPane.showInputDialog("Have you passed IT 102?");
if (answer.equals("yes"))
{
JOptionPane.showMessageDialog(null,message2);
}
else if (answer.equals("no"))
{
JOptionPane.showMessageDialog(null,message3);
}
}
else
{
JOptionPane.showMessageDialog(null,message5);
}
答案 0 :(得分:1)
您应该使用... else if ...
而不仅仅是if
:
if (courseNum == 103)
{
JOptionPane.showMessageDialog(null,message1);
}
else if (courseNum == 206)
{
JOptionPane.showMessageDialog(null,message4);
}
else if (courseNum == 106)
{
answer = JOptionPane.showInputDialog("Have you passed IT 102?");
if (answer.equals("yes"))
{
JOptionPane.showMessageDialog(null,message2);
}
else if (answer.equals("no"))
{
JOptionPane.showMessageDialog(null,message3);
}
}
else
{
JOptionPane.showMessageDialog(null,message5);
}
或者更好的是switch
:
switch (courseNum) {
case 103:
JOptionPane.showMessageDialog(null,message1);
break;
case 206:
JOptionPane.showMessageDialog(null,message4);
break;
case 106:
answer = JOptionPane.showInputDialog("Have you passed IT 102?");
if (answer.equals("yes")) {
JOptionPane.showMessageDialog(null,message2);
} else if (answer.equals("no")) {
JOptionPane.showMessageDialog(null,message3);
}
break;
default:
JOptionPane.showMessageDialog(null,message5);
}
答案 1 :(得分:0)
这是一个else
声明;如果没有别的东西匹配的话,它就是被执行的。
这是您的代码的外观(在评估条件方面):
if
if
if...else
如果它的前导else
为假,则每次都会抓住悬空if
。
您可能想要的是使用else if
语句。
以下代码:
if (courseNum == 103) {
JOptionPane.showMessageDialog(null, message1);
} else if (courseNum == 206) {
JOptionPane.showMessageDialog(null, message4);
} else if (courseNum == 106) {
answer = JOptionPane.showInputDialog("Have you passed IT 102?");
if (answer.equals("yes")) {
JOptionPane.showMessageDialog(null, message2);
} else if (answer.equals("no")) {
JOptionPane.showMessageDialog(null, message3);
}
} else {
JOptionPane.showMessageDialog(null, message5);
}
答案 2 :(得分:-1)
请使用switch语句而不是if else链,这样可以使代码更加清晰,您可以更轻松地找到代码中的错误。
switch (courseNum) {
case 103:
JOptionPane.showMessageDialog(null, message1);
break;
case 206:
JOptionPane.showMessageDialog(null, message4);
break;
case 106:
answer = JOptionPane.showInputDialog("Have you passed IT 102?");
if (answer.equals("yes")) {
JOptionPane.showMessageDialog(null, message2);
} else if (answer.equals("no")) {
JOptionPane.showMessageDialog(null, message3);
}
break;
default:
JOptionPane.showMessageDialog(null, message5);
}