如果陈述行为不同

时间:2013-06-04 02:31:33

标签: java list if-statement while-loop

使用以下代码执行作业问题,当程序运行时输入-1时,控制器会插入字符串,即使输入-1时也不应该输入。 do while循环对while语句使用相同的代码并且它正确退出,我不知道为什么其他代码不能按照我认为应该的方式工作。我是Java和编程的新手,感谢任何帮助!

public static void main(String[] args) throws IOException
{
    Control controller;
    String userInput = "";
    //InputStream fs1;
    BufferedReader br1;
   // int count = 0;
    controller = new Control(userInput);
    do
    {
        System.out.println("Please input a String and press Enter.");
        System.out.println("Inputting -1 will terminate the building "
                + "and input process.");
        br1 = new BufferedReader(new InputStreamReader(System.in));
        if(!"-1".equals(userInput))
        {
            userInput = br1.readLine();
            controller.insert(userInput);
        }
    System.out.print("\n"+ "User input: "+ userInput + "\n\n");

    }// end do
    while (!"-1".equals(userInput));

    System.out.println("\nList initialized based on your inputs:\n");  
    controller.display();

}

这是我跑的: 跑: 请输入一个String并按Enter键。 输入-1将终止构建和输入过程。 5

用户输入:5

请输入一个字符串并按Enter键。 输入-1将终止构建和输入过程。 4

用户输入:4

请输入一个字符串并按Enter键。 输入-1将终止构建和输入过程。 3

用户输入:3

请输入一个字符串并按Enter键。 输入-1将终止构建和输入过程。 -1

用户输入:-1

根据您的输入初始化列表:

列表(第一个 - >最后一个): - 1 3 4 5 建立成功(总时间:6秒)

-1不应该在列表中。有什么建议吗?

2 个答案:

答案 0 :(得分:4)

你把测试放在了错误的地方。您正在读取数据并将其放入列表而不进行测试。

    if(!"-1".equals(userInput))
    {
        userInput = br1.readLine();
        controller.insert(userInput);
    }

应该是

    userInput = br1.readLine();
    if(!"-1".equals(userInput))
    {
        controller.insert(userInput);
    }

答案 1 :(得分:2)

主要问题是你在插入后检查:

   if(!"-1".equals(userInput))
    {
        userInput = br1.readLine();
        controller.insert(userInput);
    }

这可能是一个修复:

   userInput = br1.readLine();
   if(!"-1".equals(userInput))
    {
        controller.insert(userInput);
    }