亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數組的隨機問題

數組的隨機問題

陪伴而非守候 2023-04-13 10:39:38
我們在項目中為大學創建了一個小測驗應用程序。但我們不是程序員。我現在已經創建了 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;
查看完整描述

3 回答

?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

理想情況下,您需要的是Map問題和答案之間的間隔,這樣即使問題被打亂,您也總能得到正確的答案。

Map<String,String> map = new HashMap<>();
map.put("How are you?","I am fine"); // similarly for all questions

然后使用map.entrySet()得到EntrySet<Key,Value>一對。此外,您甚至可以使用Collections.shuffle(new ArrayList<>(map.entrySet()));shuffle 獲得的EntrySet. 最好的祝愿!


查看完整回答
反對 回復 2023-04-13
?
慕哥9229398

TA貢獻1877條經驗 獲得超6個贊

從你想要完成的事情來看,根據每個frage項目的要求創建一個類,然后創建一個這樣的項目的數組會更有意義。


從您發布的代碼來看,您似乎在使用 Java,因此,這是創建類的代碼部分:


public static class frage   {

    private String data01;

    private String data02;

    private String data03;

    private String data04;

    private String data05;



    public frage(String data01, String data02, String data03, String data04, String data05) {

        this.data01 = data01;

        this.data02 = data02;

        this.data03 = data03;

        this.data04 = data04;

        this.data05 = data05;

    }


    public String getData01()   {

        return data01;

    }


    public String getData02()   {

        return data02;

    }


    public String getData03()   {

        return data03;

    }


    public String getData04()   {

        return data04;

    }


    public String getData05()   {

        return data05;

    }

}

此類相當于您創建的包含 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。希望這對您有所幫助。如果您想澄清一些事情,請將其張貼在評論中,我會盡力提供幫助;)


查看完整回答
反對 回復 2023-04-13
?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

您應該創建一個類來保存每個問題和答案,而不是在此處使用數組。經驗法則是數組應該用于一系列相似的對象。在這種情況下,“問題”和“答案”不相似,因此您不應使用數組。

當您使用這種方法時,洗牌問題變得非常簡單。您創建一個Listwith 新類的實例,然后洗牌該列表。


查看完整回答
反對 回復 2023-04-13
  • 3 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號