数组列表数据结构 – 每日温度



我在堆栈溢出上到处找过,但我不知道我哪里出错了。请帮忙!非常感谢您的时间。

这是我的代码:

import java.util.ArrayList;
import java.util.Scanner;    
public class DailyTempandAverage {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayList<String> days = new ArrayList<>();
ArrayList<Double> temperatures = new ArrayList<>();
days.add("Monday");
days.add("Tuesday");
days.add("Wednesday");
days.add("Thursday");
days.add("Friday");
days.add("Saturday");
days.add("Sunday");
System.out.print("Enter the temperature for: " +days);

double sum = 0.0;
for ( int i = 0; i < temperatures.size(); i++) {
sum += temperatures.get(i);
}
double average = (double) sum / temperatures.size();
System.out.println("Average temperatures = " + average);
}
}

这是我的输出: 跑:

Enter the temperature for: [Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday]Average temperatures = NaN
BUILD SUCCESSFUL (total time: 0 seconds)

这就是我需要它做的,它并没有做所有的事情:

以每日温度的形式将数据存储一周。 程序应提示用户输入星期几(星期一到星期日(和每天的温度。将日期和温度存储在两个不同的数组列表中。程序的输出应提供每天的温度和每周平均值。

任何帮助将不胜感激。我是Java的新手,我渴望成为一名数据科学家。再次感谢善良的陌生人。

您永远不会在temperatures中输入任何数据。

因此temperatures.size() == 0

除以 0 的任何值都是NaN

因此,代码完全按照您的指示进行操作。

您不使用扫描仪读取时间

尝试

Scanner in = new Scanner(System.in);
ArrayList<String> days = new ArrayList<>();
ArrayList<Double> temperatures = new ArrayList<>();
days.add("Monday");
days.add("Tuesday");
days.add("Wednesday");
days.add("Thursday");
days.add("Friday");
days.add("Saturday");
days.add("Sunday");
for (String day : days) {
System.out.println("Enter the temperature for: " + day);
double temp = in.nextDouble();
temperatures.add(temp);
}
double sum = 0.0;
for ( int i = 0; i < temperatures.size(); i++) {
sum += temperatures.get(i);
}
double average = (double) sum / temperatures.size();
System.out.println("Average temperatures = " + average);

编辑

虽然恕我直言,我认为最好使用Map <String, Double>,这样你只需要有一个集合

下面的代码实现了所需的功能

public class Test {
static LinkedHashMap<String, Double> weekTemp;
public static void main(String args[]) {
weekTemp = new LinkedHashMap<>();
setWeekDays(); //This method sets all the days with default temperature 0.0
storeTemperature(); //This method stores all the data provided by user
calculateAvgTemp();//This method calculates average temperature and prints all days' temperature

}
private static void setWeekDays() {
weekTemp.put("Monday", 0.0);
weekTemp.put("Tuesday", 0.0);
weekTemp.put("Wednesday", 0.0);
weekTemp.put("Thursday", 0.0);
weekTemp.put("Friday", 0.0);
weekTemp.put("Saturday", 0.0);
weekTemp.put("Sunday", 0.0);
}
private static void storeTemperature() {
Scanner sc = new Scanner(System.in);
for (String day : weekTemp.keySet()
) {
System.out.print("Enter Temperature for " + day + " --> ");
Double dayTemp = sc.nextDouble();
weekTemp.put(day, dayTemp);
}
}
private  static void calculateAvgTemp() {
Double totalTemp = 0d;
for (String s : weekTemp.keySet()) {
System.out.println("Day--> " + s + " Temp--> " + weekTemp.get(s));
totalTemp = totalTemp + weekTemp.get(s);
}
System.out.println("Average temperature of week --> " + totalTemp / 7);
}

}

最新更新