我是编程和本网站的新手,所以这里有。
我想编写一个程序,允许尽可能多的输入字符串添加到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
不会破坏循环。那是为什么?
答案 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
转换为自己的声明,没有条件。