Bin Anfänger, habe Probleme mit meinem Code: Array, Schleifen, ...

Pinkman4242

Neues Mitglied
Hey, bin Anfänger und wollte eine automatische Funktion coden. Das Array soll von selbst sich den Größten Int wert raus suchen und wieder geben. Bekomme aber immer eine Fehlermeldung:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 12 out of bounds for length 12
at List.main(List.java:15)


Code:

Java:
public class List {
  public static void main(String[] args) {

    int[] liste = {213, 123, 21, 231, 313, 313, 334, 231, 412, 213, 231, 880};

    int i = 0;
    int antwort = 0;
    int listenmax = 0;

    for (int arrayanzahl = 0; arrayanzahl < liste.length; arrayanzahl++) {
      i++;
      listenmax = liste[i];
      if (listenmax >= antwort) {
        listenmax = antwort;
      }
    }

    System.out.println("Die Größte Zahl in der Liste ist " + antwort + " groß");
  }
}
Screenshot 2021-12-02 181717.png
 
Zuletzt bearbeitet von einem Moderator:
Hallo, erstens: Bitte in Zukunft Code-Tags verwenden, sonst wird der Code nur hässlich dargestellt und sogar durch fehlinterpretierte Darstellungsanweisungen zerstört.

Zweitens: Beim letzten Durchlauf hat i bereits den Wert 12. Bei listenmax = liste[i]; wird versucht, auf das Element mit dem Index 12 zuzugreifen, die Liste geht aber nur bis zum Index 11. Daher der Fehler.
 
Array-Indices sind im Bereich 0 bis (Arraylänge-1) gültig. In deinem Fall also 0 bis 11. Da du i aber in deiner Schleife bereits inkrementierst bevor du es als Index nutzt, versuchst du also auf liste[1] bis liste[12] zuzugreifen. Heißt, liste[0] wird nie ausgewertet, während liste[12] deinen Fehler verursacht (was auch exakt der Fehlermeldung entspricht). Ergo: i brauchst du überhaupt nicht, da arrayanzahl genau die Indexwerte zugewiesen bekommt, die du benötigst. Der Variablenname arrayanzahl ist allerdings irreführend.
 
Außerdem hast du einen Dreher bei listenmax = antwort. Müsste anders herum sein.

Kannst ja mal am Rand links Haltepunkte setzen (rechts neben die Zeilennummer klicken). Und dann statt "Run" mal "Debug" auswählen. Bei IntelliJ kriegst du die aktuellen Werte ganz praktisch direkt im Code angezeigt.

Hast auch, wie bereits erwähnt wurde, einige überflüssige Variablen. Könntest zum Beispiel auch ohne Index auskommen:
Java:
int max = liste[0];
for (int zahl : liste) {
  if (zahl > max)
    max = zahl;
}
System.out.println("Die Größte Zahl in der Liste ist " + max + " groß");
 
Zurück
Oben Unten