第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何自動將用戶定義的對象存儲到地圖中?

如何自動將用戶定義的對象存儲到地圖中?

有只小跳蛙 2022-09-14 16:44:50
我正在創(chuàng)建一個小程序,它允許您插入自己的多項選擇題,并且可以通過另一種方法向您提出這些問題。 所以我用構(gòu)造函數(shù)、一個 toString() 方法和一個可以問我這些問題的方法來設(shè)置我的“問題類”。 我現(xiàn)在的問題是我必須以某種方式存儲問題,因為問題參數(shù)之一是整數(shù)“優(yōu)先級”,如果你回答正確或錯誤,它會改變。 我想到了一張地圖,如下所示,但我不知道如何正確設(shè)置它,因此它會自動將新創(chuàng)建的問題存儲到此地圖中。 也許我必須創(chuàng)建另一個方法來做到這一點,但我想找到一種不調(diào)用額外方法的方法。 下面的代碼顯示了我如何在 main 方法和數(shù)據(jù)字段以及 Question 類的構(gòu)造函數(shù)中創(chuàng)建一個新問題。 所以在這個例子中,我想將問題 number1 保存到 Map 數(shù)據(jù)庫中。 我不想手動這樣做。public static void main(String[] args) {Question number1 = new Question("What is the right answer?",            new String[] { "1", "2", "3", "4" }, 3, 1.0);}public class Question {public String question;public String[] answers;public int solution;public double priority;public static Map<Integer, Question> Database = new TreeMap<Integer,Question>();public Question(String que, String[] ans, int sol, double prio){this.question = que;this.answers = ans;this.solution = sol;this.priority = prio;}
查看完整描述

2 回答

?
婷婷同學_

TA貢獻1844條經(jīng)驗 獲得超8個贊


我建議不要將對象添加到構(gòu)造函數(shù)內(nèi)的Map中。一個原因是單一責任原則。你的構(gòu)造函數(shù)將執(zhí)行 2 項操作(初始化對象并將其添加到 Map)。這是一種不好的做法,特別是因為方法的名稱(在你的例子中是構(gòu)造函數(shù))沒有清楚地說明它的作用。另一個原因是在構(gòu)造函數(shù)中使用“this”。您應該非常小心,因為這可能會導致問題非常難以調(diào)試。原因是:當您仍在構(gòu)造函數(shù)中時,您的對象(因此“this”)尚未完全初始化。因此,您正在將未完全初始化為參數(shù)的對象傳遞給方法。正如我所說,這可能會導致大問題。


如果你真的需要一次性完成所有操作,你可以在你的類中創(chuàng)建一個靜態(tài)方法,如下所示:


   public static addQuestion(String que, String[] ans, int sol, double prio){

      int key = Database.size();

      Database.put(key, new Question (que, ans, sol, prio));

   }

然后,您可以這樣稱呼它:


   Question.addQuestion("What is the right answer?",

            new String[] { "1", "2", "3", "4" }, 3, 1.0);


查看完整回答
反對 回復 2022-09-14
?
慕少森

TA貢獻2019條經(jīng)驗 獲得超9個贊

從您的評論中,要自動將其插入到地圖中,請使用:


public class Question {


   static int keyCount; 


   public Question(String que, String[] ans, int sol, double prio){

      this.question = que;

      this.answers = ans;

      this.solution = sol;

      this.priority = prio;

      Database.put(++keyCount, this);

   }


}

在這里,每次創(chuàng)建新對象,我們都會在地圖中插入一個條目。

  1. 引用當前創(chuàng)建的對象。this

  2. 靜態(tài)變量用于在每次創(chuàng)建對象遞增鍵的值。keyCount


查看完整回答
反對 回復 2022-09-14
  • 2 回答
  • 0 關(guān)注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號