【问题标题】:HashMap with int array (int[]) as value returns null on get?以int数组(int [])为值的HashMap在get时返回null?
【发布时间】:2011-09-25 01:06:08
【问题描述】:

我有一个 Hashmap,它将学生姓名存储为键,并将分数的 int 数组存储为值。我知道它正确地创建了 HashMap,但是当我试图返回一个我似乎无法获得的键的 int 数组时。

public int[] getQuizzes(String studentName)
    {
        int[] studentsQuizzes = quizMarks.get(studentName);
        return studentsQuizzes; 
    }

它只是最终返回 null。我错过了什么,感谢您的帮助

这就是我创建哈希图的方式

quizMarks = new HashMap<String, int[]>();   

public void addStudent(String studentName)
    {
        String formattedName = formatName(studentName);
        int[] quizzes = new int[NUM_QUIZZES];
        for (int i = 0; i < quizzes.length; i++)
        {
            quizzes[i] = MIN_GRADE;
        }
        quizMarks.put(formattedName, quizzes);
    }

【问题讨论】:

  • 我们可以看看你的代码来填充它吗?我觉得这没什么问题
  • 如果你不能从中得到任何东西,你如何“知道它正确地创建了 hashmap”?
  • 我猜你的 HashMap 中没有与 studentName 匹配的键,否则使用该键存储的值为 null。您可以通过 containsKey 判断哪个。
  • 编写一个小型、独立的应用程序(控制台应用程序是一个不错的选择),演示插入和尝试检索数据。这样做的时候你很有可能会发现问题。否则,请在此处发布(简短!)程序。
  • 您必须与学生姓名完全匹配。唯一的线索是你 put 一个你称之为 formattedName 的东西,但是你的 getQuizzes 方法试图使用一个叫做 studentName 的东西作为键。也许你需要调用你的formatName 方法。

标签: java arrays hashmap


【解决方案1】:

您在地图中的键是对传入的学生姓名调用formatName 的结果。在地图上调用get 时,您似乎没有使用格式化名称作为键,这意味着您的键传递给get 与传递给put 的不同。

【讨论】:

  • 是的,完全正确。 formatName 是大写的,我完全错过了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多