Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen

Ich möchte ein Programm schreiben, in dem der User angeben kann, wie viele Zahlen er angeben möchte (z.B. 6 Zahlen) und danach aufgefordert wird diese Zahlen nacheinander in die Konsole zu schreiben. Als Ausgabe sollen die beiden größten Zahlen geliefert werden.
Ich weiß jedoch nicht wie ich mittels einer for-schleife, in einer for schleife die Zahlen in den Array pack...
Hier ein Beispiel, wie es aussehen soll:
Erster:
<größter Wert>

und dann der zweitgrößte Wert mit
Zweiter:
<zweitgrößter Wert>
--------------------------
<Bitte Anzahl eingeben:
>3
<Bitte Zahlen eingeben:
>1
<Bitte Zahlen eingeben:
>32
<Bitte Zahlen eingeben:
>31
<Erster:
<32
<Zweiter:
<31
---------------------------
<Bitte Anzahl eingeben:
>3
<Bitte Zahlen eingeben:
>1
<Bitte Zahlen eingeben:
>32
<Bitte Zahlen eingeben:
>32
<Erster:
<32
<Zweiter:
<32
---------------------------
<Bitte Anzahl eingeben:
>-32
<Fehler: Anzahl >= 2 erwartet!

Mein jetziger Code:
Java:
   public static void main(String[] args) {



    int anzahl = readInt("Bitte Anzahl eingeben:");

    int zahlen = readInt("Bitte Zahlen eingeben:");

    int [] listezahlen = new int [anzahl];



    int max = listezahlen [0];

    int maxzwei = listezahlen [0];

    int x = 1;







    for(int i=0; i<listezahlen.length; i++){

      zahlen = readInt("Bitte Zahlen eingeben");

      listezahlen = zahlen;

      for(int n=0; n<listezahlen.length; n++);

      



  }

  }

  }
 
Zuletzt bearbeitet:
Java:
for (int i = 0; i < listezahlen.length; i++) {
    listezahlen[i] = readInt("Bitte nächste Zahl eingeben");
}
 
Hi, ich habe das jetzt so umgeschrieben, allerdings kommt bei dann bei einer negativen Eingabe für Zahlen folgender
Error: Exception in thread "main" java.lang.NegativeArraySizeException: -1.

Weiterhin werden mir wenn die größte zahl doppelt angezeigt wird, diese nicht auch als zweitgrößte angezeigt.

Bei allen kombinationen passt es, außer wenn ich
  • Anzahl: 3,
  • Zahl 1: 1,
  • Zahl 2: 32,
  • Zahl 3: 31; angebe...
Code:
    public static void main(String[] args) {
        int anzahl = readInt("Bitte Anzahl eingeben:");

        int[] listezahlen = new int[anzahl];

        int max = listezahlen[0];
        int maxzwei = listezahlen[0];

      

      
        if (anzahl < 2) {
            write("Fehler: Anzahl >= 2 erwartet!");
           return;
        }else {
            for (int i = 0; i < listezahlen.length; i++) {
                listezahlen[i] = readInt("Bitte Zahlen eingeben");
            }
            for (int k = 0; k < listezahlen.length; k++) {
                if (listezahlen[k] > max) {
                    maxzwei = max;
                    max = listezahlen[k];
                }
            }
            write("Erster:");
            write(max);
            write("Zweiter:");
            write(maxzwei);

        

        }
    }

}
Würde mich sehr über einen Lösungsvorschlag freuen.
 
allerdings kommt bei dann bei einer negativen Eingabe für Zahlen folgender
Error: Exception in thread "main" java.lang.NegativeArraySizeException: -1.
Ja, da steht auch eine Zeilennummer dabei und wenn Du dort schaust, wirst Du bei der Initialisierung des Arrays landen:
Java:
        int anzahl = readInt("Bitte Anzahl eingeben:");

        int[] listezahlen = new int[anzahl];
Du musst die Initialisierung des Arrays (und min/max) einfach in den else-Zweig nehmen.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben