从JAVA中无需替换的ArrayList中随机生成字符串

时间:2014-07-09 04:37:15

标签: java arrays string random arraylist

我正在尝试创建一个程序,允许用户输入名称列表。然后程序将从ArrayList中随机拉出并逐个拉出每个名称,直到所有名称都被使用。我完成了扫描仪部件,如下所示:

public class Auction
{
    public static void main (String[] args)
    {
        Scanner scan = new Scanner(System.in);
        ArrayList<String> names = new ArrayList<String> ();
        char quit = 'Y';
        String playername = null;

        while (quit == 'Y')
        {
            System.out.println("\nPlayer Name:");
            playername = scan.next();
            names.add (playername);

            System.out.print("Enter Another Name? (Y/N) \n");
            String word = scan.next();
            word = word.toUpperCase();
            quit = word.charAt(0);
        }
      }
   }

我有另一个课程,我试图完成随机生成但没有成功。似乎没有任何错误,但它也没有工作。我知道我离开了“随意而不替换”的部分,但我只是想让它继续工作,然后再继续前进。我不确定我是否甚至引用了其他Auction类中的ArrayList。像很多其他人一样,我是Java新手,所以要温柔。我花了一个星期的时间,这应该花了我几个小时。感谢您的帮助。

public class Draft
{
    Random randomGenerator;
    ArrayList<String> names;

    String randName() {
    int index = randomGenerator.nextInt(names.size());
    System.out.println("Next on the Block" + names.get(index));
    return names.get(index);
    }
}

1 个答案:

答案 0 :(得分:2)

只需使用Collections.shuffle()随机播放列表:

Collections.shuffle(names);

您的列表现已随机化,您可以从顶部获取元素,直到它为空。例如,使用迭代器:

Iterator<List> it = names.iterator();

while (it.hasNext()) {
    String name = it.next();

    it.remove(); // optionally remove

    System.out.println("Next on the block" + name);
}

或者,如果不需要从列表中删除名称,请使用简单的for循环:

for (String name : names) {
    System.out.println("Next on the block" + name);
}