2017-11-15 15 views
1

子クラスから親クラスへの値の格納方法を知りたい。ここではその細かい点で最大子クラスから親クラスへの値の保存

public class Question { 

private HashMap<String,ArrayList<String>> mcqHashMap = new HashMap<String,ArrayList<String>>(); //storing question and options of MCQ 
public ArrayList<String> rankingquestion = new ArrayList<String>(); 
public Scanner scan = new Scanner(System.in); 
public ArrayList<String> correctMCQAnswer = new ArrayList<String>(); // will keeps the correct answer of each question 
HashMap<String,ArrayList<String>> newmcqHashMap; 

public HashMap<String, ArrayList<String>> getMCQQuestionAnswer() { 
    System.out.println("NEW:" + mcqHashMap); 
    return this.newmcqHashMap; 

} 

public void setMCQQuestionAnswer(HashMap<String, ArrayList<String>> mcqQuestionAnswer) { 
    this.mcqHashMap = mcqQuestionAnswer; 
    System.out.println("After setting" + this.mcqHashMap); 
    newmcqHashMap = this.mcqHashMap; 
} 


} 


public class MultipleChoiceQuestion extends Question { 

String storeMultipleChoiceQuestion; 
ArrayList<String> answersMCQ = new ArrayList<String>(); 
HashMap<String, ArrayList<String>> mcqQuestionAnswer = new HashMap<String, ArrayList<String>>(); 


//returns MCQQuestion 
public String storeMultipleChoiceQuestion() { 
    System.out.println("Enter the Multiple question: "); 
    String MultipleChoiceQuestion = scan.nextLine(); 
    while(MultipleChoiceQuestion.isEmpty()) { 
     System.out.println("Null in invalid"); 
     MultipleChoiceQuestion = scan.nextLine(); 

    } 
    return MultipleChoiceQuestion; 
} 

//creates MCQ Questions with mcq options 
public void create() { 
    String value = storeMultipleChoiceQuestion(); 
    try { 
     System.out.println("Enter the number of choices for your multiple choice question:"); 
     int numberOfChoices = scan.nextInt(); 
     scan.nextLine(); 
     if(numberOfChoices <= 0) { 
      System.out.println("Must be greater than 0"); 
     } 
     else { 
      for(int i=1; i <= numberOfChoices; i++){ 
       System.out.println("Enter prompt " + i); 
       String Option = scan.nextLine(); 
       answersMCQ.add(Option); 
       while(Option.isEmpty()) { 
        System.out.println("Null in invalid"); 
        Option = scan.nextLine(); 
       } 
       mcqQuestionAnswer.put(value, answersMCQ); 
       super.setMCQQuestionAnswer(mcqQuestionAnswer); 
       //this.mcqHashMap.put(value, answersMCQ);     
      } 
     } 
     }catch (Exception e) { 
     System.out.println("Exception thrown! Use integer greater than 0."); 
     } 
     } 

...今

、私は別の子クラスの調査からアクセスしてみてください。

public class Survey extends Question implements Serializable { 


MultipleChoiceQuestion mcq = new MultipleChoiceQuestion(); 
public void Display() { 

    System.out.println("THis is from get " + this.getMCQQuestionAnswer()); 
    System.out.println("THis is from get mcqhash" + this.newmcqHashMap); 

} 

` 私はどこか間違ってやっていると確信している...

を何も印刷されません。私は親クラスでゲッターセッターを使用しましたが、まだ運がありません。基本的に質問はmcqHashMapに保存され、保存されたmcqHashMapを使用してSurveyクラスの目的を表示したいと考えています。

お手数ですが、ありがとう

+0

もしあなたが何も印刷していないと言ったら、 'mcqHashMap'は全く空であるかもしれませんか?あなたのあいまいな例から何が起こっているのかを言うのは本当に難しいです。 – Eugene

+0

私はちょうど詳細を編集しました。ありがとう! – Cowarrior

答えて

0

私はそれを理解しました。ありがとう!私は保護されたハッシュマップの代わりに保護された静的なものを作った悪い習慣が働いている!

ありがとうございました。

関連する問題