在ArrayList中使用while循环

时间:2012-10-20 21:08:58

标签: java

我是编程和本网站的新手,所以这里有。 我想编写一个程序,允许尽可能多的输入字符串添加到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;
    }
}

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

嗯,这对我来说是粗心的!无论如何,我已经创建了该程序,以便找出 this 的错误:

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时循环中断。遗憾的是,如果第一次输入的输入为EXTERMINATE,程序会抛出NoSuchElement异常,如果我先输入了其他内容,则循环将开始,但是第二次输入EXTERMINATE不会破坏循环。那是为什么?

3 个答案:

答案 0 :(得分:10)

你的if之后有一个无关的分号,实际上是

if (x.equals("0")) { }
break;

答案 1 :(得分:1)

您的if声明已损坏

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

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

这是您应该在if陈述

周围使用括号的原因之一
if (x.equals("0")) {
    break;
}

答案 2 :(得分:1)

在病情结束时你会有一个分号。

这将break转换为自己的声明,没有条件。