HashMap / ArrayList平均程序

时间:2017-12-14 12:20:46

标签: java arraylist hashmap

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

我在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);
} 

1 个答案:

答案 0 :(得分:0)

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

您希望HashMap<String, ArrayList<Interger>>存储可以使用ArrayList<Integer>HashMap in id标识的数字列表(String中的HashMaplistMap)。

  1. 向HashMap添加新列表
  2. 我们假设我们的类中有一个实例变量public int createList(String listId) { this.listMap.put(listId, new ArrayList<Integer>() ); return this.listMap.size(); }

    ArrayList<Integer>

    这会向listMap添加新的public int addNumberToList(String listId, Integer number) { this.listMap.get(listId).add(number); return this.listMap.get(listId).size(); }

    1. 将数字添加到特定列表
    2. 我们现在编写一种新方法来将数字添加到某个列表中

      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;
      }
      
      1. 计算特定列表的平均值
      2. 现在我们可以使用这些列表来计算他们的平均值

         string databasePath = AppDomain.CurrentDomain.BaseDirectory + "Scheduler.db";
        
                if (MessageBox.Show("Do you want to delete database: [Scheduler.db]?", "Question", MessageBoxButton.YesNo, MessageBoxImage.Warning, MessageBoxResult.Yes) == MessageBoxResult.Yes)
                {
                    if (File.Exists(databasePath))
                    { 
        
                        SQLiteConnection connectionSqlLIte = new SQLiteConnection(@"Data Source=Scheduler.db;Version=3;"); 
                        connectionSqlLIte. Close();
        
                        File.Delete(databasePath);
                        MessageBox.Show("Database deleted: [Scheduler] ");
                        Application.Current.Shutdown();  
        
                    }
                    else
                    {
                        MessageBox.Show("There is no database: [Scheduler]!");
                    }
                }
        

        那应该是它。