我正在尝试创建一个程序,允许用户输入名称列表。然后程序将从 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);
}
}
}
我在另一个类上尝试完成随机生成,但没有成功。似乎没有任何错误,但它也不起作用。我知道我在“随机而不替换”部分上还很遥远,但我只是想在继续之前让它发挥作用。我不确定我是否引用了其他拍卖类中的 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);
}
}
最佳答案
只需使用 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);
}
关于java - JAVA中从ArrayList随机生成字符串而不进行替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24645496/