ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
ဒီ Part မှာတော့ Part 1 က ဆောက်ထားတဲ့ Student class ကို core feature ထည့်ပြီး တိုးချဲ့ပါမယ်။ HashMap ကို subject-score pair သိမ်းဖို့ အသုံးပြုပြီး၊ loop နဲ့ values() ကို ဖြတ်သန်းပြီး average ကို တွက်ချက်ပါမယ်။ if-else chain သုံးပြီး average score အလိုက် grade letter (A, B, C, F) ကို ဆုံးဖြတ်တဲ့ method ရေးပါမယ်။ Method တစ်ခုက value ကို return ပြန်ပေးတဲ့ pattern ကို ဒီနေရာမှာ practice ဖြစ်သွားမှာပါ။
လက်တွေ့ ဆောက်ကြည့်မယ်
Student class ထဲမှာ addScore(String subject, int score) method ထည့်ပြီး subjectScores.put() ကိုသုံးပါ။ calculateAverage() method တစ်ခု ရေးပြီး subjectScores.values() ကို loop ဖြတ်ပြီး total ပေါင်းကာ size နဲ့ စားပြီး double အနေနဲ့ average ကို return ပါ (map empty ဆို 0 return ပါ)။ getGrade() method ထဲမှာ calculateAverage() ရလဒ်ကို if-else conditions (>=90 ဆို A, >=75 ဆို B, >=50 ဆို C, မဟုတ်ရင် F) နဲ့ စစ်ပြီး String grade ကို return ပါ။ main method ထဲမှာ student တစ်ဦးအတွက် subject 3 ခု score ထည့်ပြီး average နဲ့ grade ကို print ထုတ်ကြည့်ပါ။
Code နမူနာ
class Student {
private String name;
private int id;
private HashMap<String, Integer> subjectScores;
public Student(String name, int id) {
this.name = name;
this.id = id;
this.subjectScores = new HashMap<>();
}
public void addScore(String subject, int score) {
subjectScores.put(subject, score);
}
public double calculateAverage() {
int total = 0;
for (int score : subjectScores.values()) {
total += score;
}
return subjectScores.isEmpty() ? 0 : (double) total / subjectScores.size();
}
public String getGrade() {
double avg = calculateAverage();
if (avg >= 90) {
return "A";
} else if (avg >= 75) {
return "B";
} else if (avg >= 50) {
return "C";
} else {
return "F";
}
}
public String getName() {
return name;
}
}
public class StudentManager {
public static void main(String[] args) {
Student s1 = new Student("Aung Aung", 101);
s1.addScore("Math", 95);
s1.addScore("English", 82);
s1.addScore("Science", 88);
System.out.println(s1.getName() + " - Average: " + s1.calculateAverage()
+ " - Grade: " + s1.getGrade());
}
}Console မှာ Aung Aung - Average: 88.33... - Grade: B ဆိုတဲ့ ပုံစံနဲ့ result ကို print ထုတ်ပေးပါလိမ့်မယ်။၅ မိနစ် စမ်းကြည့်
Grade boundaries ကို ပြောင်းကြည့်ပါ (ဥပမာ >=80 ဆို A) ပြီး student နှစ်ဦးကို score အမျိုးမျိုးထည့်ကာ grade ကွဲပြားမှုကို 5 minutes စမ်းကြည့်ပါ။
သတိလေးတစ်ချက်
HashMap ရဲ့ values() order က insertion order နဲ့ တူချင်မှတူမှာမို့ average calculation မှာ order အရေးမကြီးပေမယ့် iteration logic ကိုတော့ သေချာစစ်ပါ။