HashMap/ArrayList 平均程序



编程有点初学者,所以请耐心等待。

我在 HashMap 中创建了一个 ArrayList,以便我的所有值都可以相加成一个总和,这样我就可以将总和除以 ArrayList 的条目数,这将给我我的平均值......这一切都工作正常,除了:

我第一次进入 ArrayList 总是返回 0.0,即使在 GUI 中我输入的 45 或其他什么。如何更改它,以便我的 ArrayList 停止在我的第一个条目上输入 0?因为我创建了一个平均程序,如果我的第一个 ArrayList 条目检索正确的条目,它将起作用,而不是它每次都返回的 0。

这是我的代码:

public void addModRes( String mod, Integer res ) {
ArrayList<Integer> nums = myMap.get(mod);
if (nums == null) {
nums = new ArrayList<Integer>();
}
double sum = 0;
double test =0;
double avg =0;
for (Integer number : nums) {
sum += number;
}
//except sum is missing out the first entry in the ArrayList       
System.out.println("The Sum of all the numbers in the array is " + sum);
nums.add(res);
myMap.put(mod, nums);
test = nums.size();
//System.out.println("This is the size of the array list "+ 
numbers.size());
avg = sum/test;
System.out.println("this is the average: "+ average);
} 

我试图理解你的代码,我的猜测是你想要这样的东西:

您需要一个存储数字列表(HashMap中的ArrayList<Integer>)的HashMap<String, ArrayList<Interger>>,这些数字可以用其id(HashMap中的String)标识。

  1. 向哈希图添加新列表

假设我们的类中有一个实例变量listMap

public int createList(String listId) {
this.listMap.put(listId, new ArrayList<Integer>() );
return this.listMap.size();
}

这将向listMap添加新ArrayList<Integer>

  1. 将数字添加到某个列表

我们现在编写一个新方法来将数字添加到某个列表中

public int addNumberToList(String listId, Integer number) {
this.listMap.get(listId).add(number);
return this.listMap.get(listId).size();
}
  1. 计算某个列表的平均值

现在我们可以使用列表来计算它们的平均值

public double averageForList(String listId){
double sum = 0;
double average = 0;
for (Integer number : this.listMap.get(listId) )
{
sum += number;
}
if (this.listMap.get(listId).size() != 0) average = sum / this.listMap.get(listId).size();
return average;
}

应该就是这样。

相关内容

最新更新