简体   繁体   English

使用do-while循环将用户输入添加到ArrayList

[英]Adding user input to ArrayList using do-while loop

I am trying to add user input to an Arraylist using a do-while loop however I keep ending up with a list consisting of only the final item inputed repeated several times. 我正在尝试使用do-while循环将用户输入添加到Arraylist中,但是我最终得到的列表仅包含重复输入多次的最终项目。

public static ArrayList<Item> purchaseItems()
       {
        ArrayList<Item> toBuy = new ArrayList<Item>();

        String response;
        System.out.println("What would you like to purchase? (type \"done\" to end) ");   
        do {

             response = in.nextLine();
             if(!response.equals("done") ){

                    toBuy.add(new Item(response, randGen.nextInt(100)));
                    System.out.println(toBuy);
            }

        } while(!response.equals("done"));

        return toBuy;
    }

should work as mentioned in my comment. 应该按照我的评论中所述工作。 Please implement a toString() method in your Item class if not done already. 如果尚未完成,请在您的Item类中实现toString()方法。 you should replace your System.out.println as following: 您应该按以下方式替换System.out.println:

    public static ArrayList<Item> purchaseItems()
           {
            ArrayList<Item> toBuy = new ArrayList<Item>();

            String response;
            System.out.println("What would you like to purchase? (type \"done\" to end) ");   
            do {

                 response = in.nextLine();
                 if(!response.equals("done") ){

                        toBuy.add(new Item(response, randGen.nextInt(100)));
                }

            } while(!response.equals("done"));

               for (Item item : toBuy){
               System.out.println(item);
                }
            return toBuy;
        }

if this doesn't helps, please share some more code. 如果这样做没有帮助,请共享更多代码。

Here is fully working example 这是完整的示例

package stackoverflow;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class Q53837506 {

    public static void main(String[] args) {
        ArrayList<Item> purchaseItems = purchaseItems();
        System.out.println(purchaseItems);

    }

    public static class Item {
        String r;
        int v;

        public Item(String r, int v) {
            super();
            this.r = r;
            this.v = v;
        }

        @Override
        public String toString() {
            return "Item [r=" + r + ", v=" + v + "]";
        }
    }

    static final Random randGen = new Random();

    public static ArrayList<Item> purchaseItems() {
        ArrayList<Item> toBuy = new ArrayList<Item>();

        String response;
        System.out.println("What would you like to purchase? (type \"done\" to end) ");
        Scanner in = new Scanner(System.in);
        do {

            response = in.nextLine();
            if (!response.equals("done")) {

                toBuy.add(new Item(response, randGen.nextInt(100)));
                System.out.println(toBuy);
            }
        } while (!response.equals("done"));

        return toBuy;
    }
}

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

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