当我输入“完成”时,我的程序不会停止

时间:2013-10-25 16:34:22

标签: java for-loop arraylist while-loop java.util.scanner

我之前问了一个问题,从那以后我编辑了我的代码,但现在我的代码不会停止,当我读完时它不会停止。

public class Done {

    public static void main(String[] args){

       Scanner kb = new Scanner(System.in);
       ArrayList<String> sal = new ArrayList<String>();
       int count = 0;
       while (true){
             sal.add(kb.next());
             if (sal.equals("done"))
                 break;
             count++;
      }
      display(sal);
      displayb(sal);
    }

    public static void display(ArrayList<String> sal){

       for (int i=0; i<sal.size(); i++)
            System.out.print(sal.get(i)+ " ");
       System.out.println();
     }

    public static void displayb(ArrayList<String> sal){

       for (int z = sal.size(); z >= 1; z--)
            System.out.print(sal.get(z-1) + " ");
       System.out.println();
    }
 }

当我输入短语“done”时,我的代码不会停止。谁知道我可能做错了什么?

2 个答案:

答案 0 :(得分:6)

您正在检查ArrayList sal是否等于字符串"done" - 这将永远不会成立。也许您想检查最新输入是否等于该字符串:

while (true)
{
    String input = kb.next();

    if (input.equals("done"))
        break;

    sal.add(input);
    count++;
}

答案 1 :(得分:1)

kb.next()是您要比较的字符串。您需要将其保存在变量中:

String inputString = kb.next();
if (inputString.equals("done"))
    break;
sal.add(inputString);

这也将解决不向数组添加"done"的问题。