java - 如何从另一个类调用HashMap的方法?

标签 java class methods hashmap

在我的评估类(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/

相关文章:

java - 使用 maven 不断收到 java.lang.NoClassDefFoundError

java - 如何使用 Shiro SSO

java嵌套Map数据结构读写操作

javascript - 我如何在 Meteor 中扩展用户模型?

c++ - C++ 中的类到类数据类型转换

c++ - 了解 C++ 中的模板类 - new-operator 的问题

java - Scanner 从单一方法中多次返回新的结果

java - 如何在同一个应用程序中使用多个 JDBC 驱动程序?

java - 如何在onPostExecute中创建一个方法?

java - 所有类都应该有 .equals 和 .hashcode 方法吗?