public static void main(String[] args) {
Scanner in = new Scanner(System.in);
double[] numbers= new double [12];
numbers[0]=0;
numbers[1]=0;
numbers[2]=0;
numbers[3]=0;
numbers[4]=0;
numbers[5]=0;
numbers[6]=0;
numbers[7]=0;
numbers[8]=0;
numbers[9]=0;
numbers[10]=0;
numbers[11]=0;
for (double i=0;i<numbers.length;i++){
numbers[(int)i]= in.nextDouble();
}
double max = numbers[0];
double min = numbers[0];
for (double i=0;i<numbers.length;i++){
if (numbers[(int)i] > max){
max = numbers[(int)i];
}
}
for (double i=0;i<numbers.length;i++){
if (numbers[(int)i] < min){
min = numbers[(int)i];
}
}
double total = 0;
double average = 0;
for (int i=0; i<numbers.length; i++) {
total += numbers[i];
}
average = total/12;
System.out.println("The total rainfall for the year is "+ total + "mm with average "+ average + "mm");
System.out.println("The months with the highest rainfall is " + max);
System.out.println("The lowest amount rainfall for the year is " + min);
}
如何在java中更改数组中索引的名称?例如,我想将numbers[0]
转换为numbers[january]
。
我正在努力获得降雨计划的输出。而不是像(123.45毫米)那样获得最大值,我想把它的月份作为输出。
感谢您的帮助。
答案 0 :(得分:7)
您可以使用java.util.Calendar
来避免每月声明一个常量
numbers[Calendar.JANUARY];
numbers[Calendar.FEBRUARY];
...
答案 1 :(得分:3)
awakeFromInsert
现在您可以使用int january=0;
编辑。 上面给出了一个更好的解决方案请参考:)
答案 2 :(得分:0)
我会使用和枚举索引值的正确字段,以便您可以从枚举中引用数组索引。请参阅下面链接中的枚举Java doc,并以Planet枚号为例。 https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html
另一方面。使用Map而不是数组更有意义,因为你关心索引和值。你的地图就像地图,其中关键是月份,价值是你的衡量标准吗?
答案 3 :(得分:0)
数组肯定不是您应该使用的对象类型。您可以考虑使用集合,例如ArrayList
。 (顺便说一下,您不需要重新实施min
和max
)
然后你可以在列表中搜索indexOf你的最小值和最大值(最终有多个结果)。
假设i
是您的索引,您可以获得如下所示的月份名称:
monthString = new java.text.DateFormatSymbols().getMonths()[i];
所以你的代码可能以:
结束 ArrayList<Double> list = new ArrayList<>();
for (int i = 0; i < numbers.length; i++) {
list.add(numbers[i]);
}
String minMonth = new DateFormatSymbols().getMonths()[list.indexOf(min)]; // note: only consider the first result
String maxMonth = new DateFormatSymbols().getMonths()[list.indexOf(max)];
System.out.println("The total rainfall for the year is " + total + "mm with average " + average + " mm");
System.out.println("The months with the highest rainfall is " + maxMonth);
System.out.println("The lowest amount rainfall for the year is " + minMonth);
你将获得如下输出:
全年的总降雨量为13100.4毫米,平均为1091.7毫米 降雨量最多的月份是Juli 今年降雨量最低的是八月