有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

以随机顺序打印数组中的字符串(java)

我有一个学校作业,我要做一个小程序,问你一个问题,列出可能的答案,你必须输入答案的编号。 如果不是因为两件事,这不会是什么大问题:

-每次提出问题时,答案必须以不同的顺序显示

-老师给了我们一个我们必须遵循的特定课堂/方法结构

  • 输入/输出
  • “逻辑”类具有:
    • 构造函数(字符串问题,字符串[]答案,int 正确答案的索引)
    • 公共字符串问题
    • 公共字符串[]获取答案
    • 公共字符串getCorrectAnswer
    • 公共布尔控制应答
    • 私有空间随机化

你们能给我一个随机分组的方法吗?其余的问题也没那么难处理


共 (4) 个答案

  1. # 1 楼答案

    看看java。util。随机数用于生成随机数

    Random rnd = new Random(new Date().getTime());
    

    newDate()部分为随机数生成器添加种子,这样它就不会在每次运行程序时都有完全相同的值

    然后我会做以下事情:

    1. 在我的课堂上,在随机化之前做一个指向正确答案的指针
    2. 将答案复制到ArrayList中
    3. 然后做一个循环。当数组中仍有来自#2的内容时,生成一个随机数0<;=rnd<;计算并将其用作该数组中的索引,以将值复制到新数组中

    你现在有了答案

  2. # 2 楼答案

    String[] answers = new String[5];
    
    //assume your array gets populated here...
    
    //convert to a List so we can use Collections.shuffle()
    List<String> answersList = Arrays.asList(answers);
    Collections.shuffle(answersList);
    
    //converting back to an array (although I'd avoid working with arrays alltogether if possible)
    String[] shuffledAnswers = answersList.toArray(answers);
    
  3. # 3 楼答案

    templated Collections.shuffle是您可以使用的方法

    实际上,你应该只使用这个,因为它是专门为这个设计的。底层是相当优化的洗牌算法。尽管你可以通过覆盖特定的方法来定制算法

    http://www.tutorialspoint.com/java/util/collections_shuffle.htm 这是一个例子,你可以参考它洗牌列表

    希望有帮助

  4. # 4 楼答案

    集合有shuffle方法,所以从您自己的测试类中创建一个ArraList