我正在尝试创建一个程序,允许用户输入名称列表。然后程序将从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);
}
}
答案 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);
}