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最初に別の何かを入力した場合はループが開始されますが、EXTERMINATE2 回目のラウンドを入力してもループは中断されません。何故ですか?

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これが、ステートメントを括弧で囲む必要がある理由の1つです。

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

条件の最後にセミコロンがあります。

これによりbreak、は条件なしで独自のステートメントになります。

于 2012-10-20T21:11:51.877 に答える