java - JAVA中从ArrayList随机生成字符串而不进行替换

标签 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);
        }
      }
   }

我在另一个类上尝试完成随机生成,但没有成功。似乎没有任何错误,但它也不起作用。我知道我在“随机而不替换”部分上还很遥远,但我只是想在继续之前让它发挥作用。我不确定我是否引用了其他拍卖类中的 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/

相关文章:

java - 触摸图表会显示一些虚线选择矩形

java - Kivy 应用程序崩溃,没有非静态方法 openAPKExpansionInputStream

node.js - 如何在不使用 unwind 的情况下使用 mongodb 中的数组元素对数据进行排序

ruby-on-rails - 你怎么知道一个数组是否有连续的相同元素?

sql-server - 空格后的子串

c - 将多个字符串作为输入时出现不必要的换行符

java - Jsoup 设置接受 header 请求不起作用

尝试启动 Windows 服务时出现 java.lang.ClassNotFoundException : org. Zeromq.ZContext

vb.net - 数组或列表中的项目是否保持其顺序?

c++ - 查找字符串是否包含 C++ 中的字符(允许 boost )