[英]How to call the method of HashMap from another class?
在我的評估課中,我有一個名為addMark的方法,它將學生ID和標記都放入稱為標記的哈希圖中。 我正在嘗試使用學生類將studentid和mark放入哈希圖中,但它一直在給我錯誤。 我打錯了評估班嗎? 有人可以幫忙嗎?
學生班:
public class Student {
public void createStudents() {
Mark m1 = new Mark(30, "Bad");
Assessment.addMark("11", m1);
}
標記等級:
public class Mark {
private int mark;
private String comment;
public Mark(int mark){
}
public Mark(int mark, String comment){
}
public void setMark(int mark) throws Exception {
/*
* Start Preconditions
*/
// Precondition: firstArgumentNonNegative
if (mark < 0){
throw new Exception("Precondition violated:"
+ " firstArgumentNonNegative");
}
/*
* End Preconditions
*/
this.mark = mark;
}
public int getMark() {
return this.mark;
}
public void setComment(String comment){
this.comment = comment;
}
public String getComment(){
return this.comment;
}
}
評估課:
import java.util.HashMap;
import java.util.Map;
public abstract class Assessment {
private Map<String, Mark> marks = new HashMap<String, Mark>();
public String getAllStudentMarks(){
String outString = "Student ID:\tMark:\tComment:";
for (Map.Entry<String, Mark> entry : marks.entrySet()){
String studentId = entry.getKey();
Mark mark = entry.getValue();
int value = mark.getMark();
String comment = mark.getComment();
outString += String.format("\n%s\t%d\t%s", studentId, value, comment);
}
return outString;
}
public boolean hasCompleted(String studentId){
return marks.containsKey(studentId);
}
public void addMark(String studentId, Mark mark) throws Exception{
/*
* Start Preconditions
*/
// Precondition: markNotGreaterThanWeight
if (mark.getMark() > this.weight){
throw new Exception("Precondition violated: "
+ "markNotGreaterThanWeight");
}
/*
* End Preconditions
*/
marks.put(studentId, mark);
}
public int getMark(String studentId){
return marks.get(studentId).getMark();
}
public String getComment(String studentId){
return marks.get(studentId).getComment();
}
public abstract String description();
}
Assessment
是一個抽象類,因此如果要使用它,則需要對其進行擴展:
class MyAssessment extends Assessment {
@Override
public String description() {
return "My assessment";
}
}
然后,您可以在此新實現上調用addMark
MyAssessment myAssessment = new MyAssessment();
myAssessment.addMark("11", m1);
另外,此方法會引發Exception
因此您需要嘗試/捕獲它
try {
new MyAssessment().addMark("11", m1);
} catch(Exception e) {
e.printStackTrace();
}
最后,您的Assessment
類中沒有weight
屬性,因此,如果要編譯該類,應該以某種方式定義一個。
private int weight = 0;
我找不到確切的問題,但是通過您的代碼,我發現了。
您需要擴展抽象類Assessment
ex。 AssessmentManager
class AssessmentManager extends Assessment
創建AssessmentManager
對象,然后使用它。
AssessmentManager _assessment = new AssessmentManager(); _assessment.addMark(Student_ID, Marks)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.