有点初学者编程所以请耐心等待。
我在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);
}
答案 0 :(得分:0)
我试图理解你的代码,我的猜测是你想要这样的东西:
您希望HashMap<String, ArrayList<Interger>>
存储可以使用ArrayList<Integer>
(HashMap
in id
标识的数字列表(String
中的HashMap
) listMap
)。
我们假设我们的类中有一个实例变量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();
}
。
我们现在编写一种新方法来将数字添加到某个列表中
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;
}
现在我们可以使用这些列表来计算他们的平均值
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]!");
}
}
那应该是它。