2016-05-17 11 views
0

私はここでやろうとしていることは、HashMapからStudentを取得し、Studentのマークにダブルマークを追加することです。ハッシュマップのjava値を変更する

私はクラスの学生と学生クラスを持っていると言うことができますaddToMark()とハッシュマップtheStudent = new HashMap<String, Student>と呼ばれるメソッドがあります。

public void addExtraMark(String studentNumber, double mark) { 
    if(stuentNumber != null && mark >= 0) { 
     Student extraMark = theStudent.get(studentNumber); 
     extraMark.addToMark(mark)}; 
    } 
} 

私の質問は、ハッシュマップに追加されますか?自動的に?または私は使用する必要があります

theStudent.put(studentNumber, extraMark); 

私のコードのボトムに?

答えて

2

Student extraMarkはそのStudentへの参照であるため、参照することはHashMapに反映されます。

いいえ、あなたは電話をかける必要はありません。このコードで

theStudent.put(studentNumber, extraMark); 
1

を:

Student extraMark = theStudent.get(studentNumber); 
extraMark.addToMark(mark)}}; 

studentNumberは、ハッシュ・マップに存在しない場合は、get戻りnull。その後、extraMark.addToMarkNullPointerExceptionを投げます。

だから、例えば、あなた自身を確認する必要があります。:

Student extraMark; 
if (theStudent.containsKey(studentNumber)) { 
    extraMark = theStudent.get(studentNumber); 
} else { 
    extraMark = new Student(.......); 
    theStudent.put(studentNumber, extraMark); 
} 
extraMark.addToMark(mark); 

か、get最初に行うとnullのための結果を確認。

注:私はあなたの質問は、しかし、あなたの質問を再読み込みした後、私は」「がすでに存在していなかった場合、それはハッシュマップに新しい学生を追加する」意味「マークがHashMapのために追加しない」ことを前提としましたあなたが何を意味しているかわからない。

関連する問題