数组的随机问题

我们在项目中为大学创建了一个小测验应用程序。但我们不是程序员。我现在已经创建了 17 个问题并将它们打包到 17 个数组中。问题始终位于数组的位置 0。答案总是在数组的位置 1。一切也都正常工作。但我想插入一个随机订单。我已经尝试过 Switch Case 或 randomshuffle,没有成功,答案不再与问题匹配。


如果有人能帮助我们,我会很高兴。非常感谢。


这是第17个阵列。我认为将它们全部展示是没有意义的。


    String[] frage17 = new String[5];

    frage17[0] = "Marke";

    frage17[4] = "Produkt/Dienstleistung";

    frage17[2] = "Preis/Verkaufsbedingungen";

    frage17[3] = "Distribution";

    frage17[1] = "Kommunikation";

现在这是我的手动订单。我现在如何在不更改数组的情况下创建随机顺序?


    fragen.add(0, frage17);

    fragen.add(1, frage11);

    fragen.add(2, frage13);

    fragen.add(3, frage4);

    fragen.add(4, frage7);

    fragen.add(5, frage1);

    fragen.add(6, frage5);

    fragen.add(7, frage16);

    fragen.add(8, frage9);

    fragen.add(9, frage8);

    fragen.add(10, frage10);

    fragen.add(11, frage2);

    fragen.add(12, frage12);

    fragen.add(13, frage14);

    fragen.add(14, frage15);

    fragen.add(15, frage6);

    fragen.add(16, frage3);

最后输出:


ArrayList<String[]> getFragen() {

    return fragen;


陪伴而非守候
浏览 135回答 3
3回答

哔哔one

理想情况下,您需要的是Map问题和答案之间的间隔,这样即使问题被打乱,您也总能得到正确的答案。Map<String,String>&nbsp;map&nbsp;=&nbsp;new&nbsp;HashMap<>(); map.put("How&nbsp;are&nbsp;you?","I&nbsp;am&nbsp;fine");&nbsp;//&nbsp;similarly&nbsp;for&nbsp;all&nbsp;questions然后使用map.entrySet()得到EntrySet<Key,Value>一对。此外,您甚至可以使用Collections.shuffle(new ArrayList<>(map.entrySet()));shuffle 获得的EntrySet.&nbsp;最好的祝愿!

慕哥9229398

从你想要完成的事情来看,根据每个frage项目的要求创建一个类,然后创建一个这样的项目的数组会更有意义。从您发布的代码来看,您似乎在使用 Java,因此,这是创建类的代码部分:public static class frage&nbsp; &nbsp;{&nbsp; &nbsp; private String data01;&nbsp; &nbsp; private String data02;&nbsp; &nbsp; private String data03;&nbsp; &nbsp; private String data04;&nbsp; &nbsp; private String data05;&nbsp; &nbsp; public frage(String data01, String data02, String data03, String data04, String data05) {&nbsp; &nbsp; &nbsp; &nbsp; this.data01 = data01;&nbsp; &nbsp; &nbsp; &nbsp; this.data02 = data02;&nbsp; &nbsp; &nbsp; &nbsp; this.data03 = data03;&nbsp; &nbsp; &nbsp; &nbsp; this.data04 = data04;&nbsp; &nbsp; &nbsp; &nbsp; this.data05 = data05;&nbsp; &nbsp; }&nbsp; &nbsp; public String getData01()&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; return data01;&nbsp; &nbsp; }&nbsp; &nbsp; public String getData02()&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; return data02;&nbsp; &nbsp; }&nbsp; &nbsp; public String getData03()&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; return data03;&nbsp; &nbsp; }&nbsp; &nbsp; public String getData04()&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; return data04;&nbsp; &nbsp; }&nbsp; &nbsp; public String getData05()&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; return data05;&nbsp; &nbsp; }}此类相当于您创建的包含 5 个字符串的数组。要创建此类的项目,请这样做:frage frage1 = new frage("Marke", "Produkt/Dienstleistung", "Preis/Verkaufsbedingungen", "Distribution", "Kommunikation");同样,创建其余的对象。data01根据您的方便修改在类中声明的名称和其他变量(字符串)。由于您提到您没有编码经验,因此要从您可以使用的项目中获取数据:String result = frage1.getData01();这frage1是我在前面的代码片段中创建的项目。data01并且存在于内部的数据frage1现在存在于内部result,您可以随心所欲地使用这些数据。现在,创建一个项目列表frage,在上面的代码片段中,我创建了frage1,以同样的方式创建其他 16 个项目(或任意数量)!像这样创建ArrayList:ArrayList<frage> fragen = new ArrayList<frage>();并将这些项目放入上面创建的数组列表中:fragen.add(frage1);同样,添加您创建的其余项目。现在,每当你想frage从 arraylist 中获取一个随机项时,首先导入java.util.Random并创建一个 的对象Random,即将其添加到程序的最开头:import java.util.Random;Random rand = new Random();现在,无论何时在程序中你想得到 的随机项frage,使用这个代码:frage random_item = fragen.get(rand.nextInt(fragen.size()));因此,您将获得一个随机frage项目,其中包含有关您问题的所有详细信息。这里,frage是我们创建的类的名称,fragen是我们创建的 ArrayList 的名称,是应该在开始时创建的rand实例。Random如果你想data01从random_item你刚刚得到的,使用:String data = random_item.getData01();现在data将包含 的值data01。希望这对您有所帮助。如果您想澄清一些事情,请将其张贴在评论中,我会尽力提供帮助;)

千巷猫影

您应该创建一个类来保存每个问题和答案,而不是在此处使用数组。经验法则是数组应该用于一系列相似的对象。在这种情况下,“问题”和“答案”不相似,因此您不应使用数组。当您使用这种方法时,洗牌问题变得非常简单。您创建一个Listwith 新类的实例,然后洗牌该列表。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java