我正在尝试阅读有关使用while循环的小程序的预测试条件,它将编译响应并在其上输出数据,但是我遇到了一个问题,无论我在输入框中输入什么,它都告诉我它无效。我不确定是什么问题。这是相关的代码。
import javax.swing.JOptionPane;
public class SurveySummarization
{
public static void main(String[] args)
{
int agree = 0;
int disagree = 0;
int neutral = 0;
int totalVotes = 0;
int input;
String inputString;
inputString = JOptionPane.showInputDialog("Response: \n" +
"(1=agree, 2=disagree, 3=no opinion, -1=exit)");
input = Integer.parseInt(inputString);
while (input != -1)
{
if (input == 1)
{
agree += 1;
totalVotes += 1;
}
if (input == 2)
{
disagree += 1;
totalVotes += 1;
}
if (input == 3)
{
neutral += 1;
totalVotes += 1;
}
else {
JOptionPane.showMessageDialog(null, "invalid response "
+ input);
}
}
}
}
答案 0 :(得分:2)
这是因为你没有正确使用else
。如果您查看代码,最终的if
就是
if (input == 3)
{
neutral += 1;
totalVotes += 1;
}
else {
JOptionPane.showMessageDialog(null, "invalid response "
+ input);
}
表示如果输入!= 3,则显示无效响应。
要解决此问题,请将if更改为else if (input == 2)
...(对于== 3也是如此)。
答案 1 :(得分:1)
正如史蒂夫指出的那样, if 没有正确放置。我认为你的意思是把其他如果而不是单独的 if 。
import javax.swing.JOptionPane;
public class SurveySummarization
{
public static void main(String[] args)
{
int agree = 0;
int disagree = 0;
int neutral = 0;
int totalVotes = 0;
int input;
String inputString;
inputString = JOptionPane.showInputDialog("Response: \n" +
"(1=agree, 2=disagree, 3=no opinion, -1=exit)");
input = Integer.parseInt(inputString);
while (input != -1)
{
if (input == 1)
{
agree += 1;
totalVotes += 1;
}else if (input == 2)
{
disagree += 1;
totalVotes += 1;
} else if (input == 3)
{
neutral += 1;
totalVotes += 1;
}
else {
JOptionPane.showMessageDialog(null, "invalid response "
+ input);
}
}
}
}
答案 2 :(得分:0)
因为你知道输入不能等于1& 2& 3同时你应该使用else if,以及第一个if和final else。您当前的代码检查输入是否等于1,如果它很好。然后你检查它是否等于2,但是你之前的陈述很好地断定输入等于1,因此你不需要检查== 2,或== 3.使用if / else if / else链接在一起将链接在一起时只满足一个条件。一旦达到满足条件的条件,就跳过剩下的条件。
if (input == 1)
{
agree += 1;
totalVotes += 1;
}
else if (input == 2)
{
disagree += 1;
totalVotes += 1;
}
else if (input == 3)
{
neutral += 1;
totalVotes += 1;
}
else {
JOptionPane.showMessageDialog(null, "invalid response " + input);
}