繁体   English   中英

在ArrayList中使用while循环

[英]Using a while loop in an ArrayList

我是编程和本网站的新手,所以这里有。 我想编写一个程序,允许尽可能多的输入字符串添加到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时循环中断。 遗憾的是,如果第一次输入的输入是EXTERMINATE ,程序会抛出NoSuchElement异常,如果我先输入其他内容,则循环将开始,但是第二次输入EXTERMINATE不会破坏循环。 这是为什么?

if之后你有一个无关的分号,这有效地成功了

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

你的if语句坏了

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

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

这就是为什么你应该在if语句周围使用括号的原因之一

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

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

这会把break变成一个自己的陈述,没有条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM