如果while循环内的语句错误

时间:2017-03-08 16:29:37

标签: java

我正在尝试阅读有关使用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);
            }
        }


    }
}

3 个答案:

答案 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);
}