gpt4 book ai didi

java - hashmap 在 while 循环之外是不同的

转载 作者:行者123 更新时间:2023-12-02 07:06:43 25 4
gpt4 key购买 nike

我不确定为什么 hashmap 在 while 循环内部和 while 循环外部打印出不同的内容。我在 while 循环之外声明了 map ,所以我认为它的内部和外部应该是相同的。在代码中,我在 while 循环内部和外部都有相同的打印语句,但它们打印不同的内容。 map 的键是 personCounter,它会递增并且应该是唯一的。非常感谢您的帮助。

    public Map<Integer, double[]> setRating(CSVReader r, int taskNum, int taskWeightNumHeader) 
throws NumberFormatException, IOException {
String[] line;
int personCounter = 0;

Map<Integer, double[]> indivTaskRating = new HashMap<Integer, double[]>();
while ((line = r.readNext()) != null) {
double[] perTaskWeight = new double[5];
personCounter++;
int multiplier = taskNum * 5;
perTaskWeight[2] = Double.parseDouble(line[taskWeightNumHeader + multiplier]);
perTaskWeight[1] = Double.parseDouble(line[taskWeightNumHeader + multiplier + 1]);
perTaskWeight[0] = Double.parseDouble(line[taskWeightNumHeader + multiplier + 2]);
perTaskWeight[3] = Double.parseDouble(line[taskWeightNumHeader + multiplier + 3]);
perTaskWeight[4] = Double.parseDouble(line[taskWeightNumHeader + multiplier + 4]);
indivTaskRating.put(personCounter, perTaskWeight);
for (int j = 0; j < 5; j ++) {
System.out.println("personID: " +1+ ", rating: " +indivTaskRating.get(1)[j]);
}
}
for (int j = 0; j < 5; j ++) {
System.out.println("personID: " + 1+ ", rating: " +indivTaskRating.get(1)[j]);
}
return indivTaskRating;
}

最佳答案

您在 map 中放置的每个条目中都使用相同的 double 组。最后,每个条目都会填充相同的值!

您需要在 while 循环的每次迭代中重新分配数组才能解决问题。

while ((line = r.readNext()) != null) {
double[] perTaskWeight = new double[5];

// ....
}

关于java - hashmap 在 while 循环之外是不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16015249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com