如何在java中更改数组中索引的名称?

时间:2016-04-21 15:22:08

标签: java arrays

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毫米)那样获得最大值,我想把它的月份作为输出。

感谢您的帮助。

4 个答案:

答案 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。 (顺便说一下,您不需要重新实施minmax

然后你可以在列表中搜索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   今年降雨量最低的是八月