我被问到的问题是:
开发一个应用程序,该应用程序可以接受用户四个星期中每天的平均降雨量并将其存储在数组中。然后,应用程序应计算每周的平均降雨量,并将答案存储在单独的数组中。然后,应用程序应将4个平均值输出给用户。将类另存为RainfallApp.java
这是我到目前为止所拥有的,我无法使它正常工作。 --
public class RainfallApp {
// int[rows ←→][colums ↑↓] num = new int[][];
public static void main(String[] args) {
int[][] rain = new int[4][7]; //4 weeks, 7 days
int[][] average = new int[4][1]; //4 weeks, 1 average of week
int sum[] = new int[4]; //total rain per week
int i;
int j;
for (i = 0; i < rain.length; i++) {
for (j = 0; j < rain[0].length; j++) {
rain[i][j] = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter value")); //value
}
sum[i] = sum[i] + rain[i][j]; //total of each week
average[i][j] = sum[i]/rain[i][j];
}
JOptionPane.showMessageDialog(null, "The average for each week is: "+ average);
}
}
最佳答案
使用流,您可以执行此操作。
Stream.of(rain)
.map(week -> IntStream.of(week).average())
.filter(OptionalDouble::isPresent)
.map(OptionalDouble::getAsDouble)
.forEach(System.out::println);
更常规地,或者如果您需要星期数,则可以执行此操作。
for (int weekNum = 1; weekNum <= rain.length; ++weekNum)
{
OptionalDouble maybeAverage = IntStream.of(rain[weekNum-1]).average();
if (maybeAverage.isPresent())
{
System.out.println("Average for week " + weekNum + ": " + maybeAverage.getAsDouble());
}
}