2016-04-21 5 views
-3
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); 
} 

Wie ändere ich den Indexnamen in Array in Java? Zum Beispiel möchte ich numbers[0] zu numbers[january] konvertieren.Wie ändere ich den Namen des Index in Array in Java?

Ich versuche, die Ausgabe von Niederschlag Programm zu bekommen. Anstatt den maximalen Wert wie (123,45mm) zu erhalten, möchte ich seinen Monat als Ausgabe erhalten.

Vielen Dank für Hilfe.

+1

Der Name der Variablen und die Ausgabe Ihres Programms sind zwei verschiedene Dinge, obwohl. Ich vermute, dein Ziel damit ist ... verdächtig. – Gendarme

+0

Sie haben also ein Array mit 12 Elementen, jedes Element ist ein Doppel, das den Niederschlag eines bestimmten Monats darstellt. Artikel mit Index 0 ist Januar und 11 ist Dezember? –

+0

Können Sie ein Codebeispiel posten? –

Antwort

3
int january=0; 

jetzt können Sie numbers[january];

bearbeiten verwenden. Eine bessere Lösung ist oben siehe da :)

+0

Die Konstanten könnten' static final' –

+1

einfacher gemacht werden anstatt den Namen aller Monate zu deklarieren? –

+2

Sie können die Statik verwenden, die bereits in der Calendar-Klasse enthalten ist. 'Calendar.JANUARY' ==' int (0) ' –

7

Sie java.util.Calendar für jeden Monat zu vermeiden, können

numbers[Calendar.JANUARY]; 
numbers[Calendar.FEBRUARY]; 
... 
+0

Dies ist die eleganteste Lösung IMHO. –

0

eine Konstante erklärt würde ich mit dem richtigen Feld verwenden und Enum, die so von dem Indexwert Sie können den Array-Index von der Enumeration aus referenzieren. Sehen Sie sich Java-Dokument für enum im folgenden Link an und betrachten Sie das Planet enum als Beispiel. https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

Auf eine andere Anmerkung. Wäre es sinnvoller, Map anstelle von Array zu verwenden, da sowohl der Index als auch der Wert von Interesse sind. Ihre Karte würde wie Karte sein, wo der Schlüssel der Monat ist und der Wert Ihr Maß ist?

0

Ein Array ist sicherlich nicht die Art von Objekt, das Sie verwenden sollten. Sie können stattdessen eine Sammlung in Betracht ziehen, zum Beispiel eine ArrayList. (Übrigens müssen Sie dann die min und die max)

nicht erneut implementieren Dann könnten Sie in Ihrer Liste den IndexOb Ihre min und den maximalen Wert suchen (es gibt schließlich mehrere Ergebnisse).

könnten Sie den Namen des Monats erhalten wie folgt, unter der Annahme, i Ihr Index:

monthString = new java.text.DateFormatSymbols().getMonths()[i]; 

So Ihr Code könnte endet mit:

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); 

und Sie erhalten eine Ausgabe erhalten, wie :

Der Gesamtniederschlag für das Jahr beträgt 13100.4mm mit Durchschnitt 1091.7 mm Th e Monate mit dem höchsten Niederschlag ist Juli Die niedrigste Menge Niederschlag für das Jahr ist August

Verwandte Themen