在我的评估类(class)中,我有一个名为 addMark 的方法,它将 Studentid 和 mark 放入名为marks 的 HashMap 中。我正在尝试使用学生类(class)将学生 ID 和标记放入 HashMap 中,但它不断给我错误。我是否错误地调用了评估类(class)?有人可以帮忙吗?
学生类(class):
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);
此外,此方法会抛出异常
,因此您需要尝试/捕获它
try {
new MyAssessment().addMark("11", m1);
} catch(Exception e) {
e.printStackTrace();
}
最后,您的 Assessment
类中没有 weight
属性,因此如果您希望该类能够编译,您应该以某种方式定义一个属性。
private int weight = 0;
关于java - 如何从另一个类调用HashMap的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49857654/