2

我是编程和这个网站的新手,所以就到这里吧。我想编写一个程序,允许将尽可能多的输入字符串添加到ArrayList. 所以我while在下面的代码中使用了一个循环。我的意图是如果输入是0.

import java.util.*;

public class AddToList2
{
static Scanner q = new Scanner(System.in);

public static void main(String[] args)
{
    ArrayList<String> inputlist = new ArrayList<String>();
    while (true)
    {
        System.out.print("Enter something here: ");
        String x = q.nextLine();
        inputlist.add(x);
        if (x.equals("0"));
            break;
    }
}

该程序编译没有错误,但遗憾的是,当我多次运行该程序时,无论输入是什么,循环都会中断。有什么办法可以解决这个问题?

好吧,那是我的粗心!无论如何,我创建了该程序以找出问题所在:

ArrayList<String> endangeredlist = new ArrayList<String>();
    ArrayList<Integer> popn = new ArrayList<Integer>();
    while (true)
    {
        System.out.print("Name an animal: ");
        String animal = q.nextLine();
        endangeredlist.add(animal);
        if (animal.equals("EXTERMINATE"))
            break;          
        q.next();
        System.out.print("How many are left in the wild? ");
        int numberleft = q.nextInt();
        popn.add(new Integer(numberleft));
    }

(这是一个更大程序的一部分。)我的意图是当动物名称输入为EXTERMINATE. 遗憾的是,如果第一次输入是 ,程序会抛出 NoSuchElement 异常EXTERMINATE,并且如果我首先输入了其他内容,则循环将开始,但是EXTERMINATE第二次输入不会中断循环。这是为什么?

4

3 回答 3

10

你的 后面有一个多余的分号if,这有效地使它

if (x.equals("0")) { }
break;
于 2012-10-20T21:10:23.303 回答
1

你的if陈述被破坏了

if (x.equals("0"));

这基本上是说if (x.equals("0"))什么都不做...

if这是您应该在语句周围使用括号的原因之一

if (x.equals("0")) {
    break;
}
于 2012-10-20T21:11:40.403 回答
1

您的病情末尾有一个分号。

这会将 thebreak变成它自己的语句,而没有条件。

于 2012-10-20T21:11:51.877 回答