ユーザーが入力した金額の値を格納するコードを記述しました。プログラムがユーザに「y/n項目を入力しますか?ユーザーはArrayListに格納された値を入力できます。Whileループ中にネストされたArrayListの値をリセット
最初のプロンプトは次のとおりです。私は目に見えるエラーがなくても値を入れることができるので、うまくいくようです。
System.out.print("Would you like to input item/s - y/n: ");
String response = textReader.nextLine();
System.out.println();
// create while loop to restrict responses to single characters
while ((!response.equalsIgnoreCase("y")) && (!response.equalsIgnoreCase("n")))
{
System.out.print("Sorry - we need a y/n: ");
response = textReader.nextLine();
System.out.println();
}
しかし、2回目に値を入力すると、最初のエントリの値がクリアされないことがわかります。ユーザーに別の値のクラスターを要求するために書いたコードは、最初のプロンプトで書いたコードと同じです。私は、ユーザーが最初のプロンプトに "y"を選択したことを契機として、これらの2番目のプロンプトを入れ子に入れました。
while ((response.equalsIgnoreCase("y")))
{
System.out.print("Please enter an item price, or -1 to exit: $");
double values = numberReader.nextDouble();
while ((values > (-1)))
{
cartItems.add(values);
System.out.print("Please enter another item price, or -1 to exit: $");
values = numberReader.nextDouble();
}
System.out.println();
System.out.println("********** Here are your items **********");
// I omitted the code here to make this more concise.
// prompt the user to input a second round of values
System.out.print("Would you like to input item/s - y/n: ");
response = textReader.nextLine();
System.out.println();
// create while loop to restrict responses to single characters
while ((!response.equalsIgnoreCase("y")) && (!response.equalsIgnoreCase("n")))
{
System.out.print("Sorry - we need a y/n: ");
response = textReader.nextLine();
System.out.println();
}
}
私の出力は以下の通りです。 2回目のメッセージが表示されたら、「y」を選択してアイテムを追加します。しかし、新しく追加された$ 3.00のアイテムは、最初のプロンプトからリストに追加されます。 ArrayListをリフレッシュまたは消去して、新しい値を入力するたびにまったく新しいものになるようにしていますか?