Java unklare Fehlermeldung

meetmimi

Newbie
Registriert
Dez. 2014
Beiträge
2
Hallo ihr Lieben,

an erster Stelle tut es mir leid, wenn ich hier irgendetwas nicht korrekt mache, bin noch ganz neu hier.
Ich habe mit dem Java Editor eine Datei programmiert, die eigentlich wie ein einfacher Taschenrechner (+,-,*,/) funktionieren sollte.
Jetzt wird mir aber immer die Fehlermeldung "Exeption in thread "main" java.lang.ArrayIndexOutOfBoundsExeption: 4 at Taschenrechnertest.main<Taschenrechnertest.java:24>" angezeigt. :(
Was mache ich falsch?
Meine Datei sieht wie folgend aus:

Code:
public class Taschenrechnertest {
  public static void main(String[] args) {
    System.out.print("Geben Sie an, wie viele Zahlen Sie für die Rechnung benötigen: ");
    int anzahlZ= Tastatur.leseZahl();
    int[]anzahlZahlen = new int[anzahlZ];
    int[]xx = new int[anzahlZ];
    char[]yp = new char[anzahlZ];
    double e;
    int[]z = new int [anzahlZ];
    for (int i=anzahlZ-1;i>0;i--) {
      System.out.print("Zahl     : ");
      xx[i]=Tastatur.leseZahl();
      System.out.print("Zeichen  : ");
      yp[i]= Tastatur.leseZeichen();
      System.out.print("Zahl     : ");
      z[i]= Tastatur.leseZahl();
      if (yp[i]=='+') {
        e=xx[i]+z[i];
        System.out.println("Ergebnis  : "+ e);
      } // end of if
      if (yp[i]=='-') {
        e=xx[i]-z[i];
        System.out.println("Ergebnis  : "+ e);
      } // end of if
      if (yp[i]=='*') {
        e=xx[i]*z[i];
        System.out.println("Ergebnis  : "+ e);
      } // end of if
      if (yp[i]=='/') {
        e=xx[i]/z[i];
        System.out.println("Ergebnis  : "+ e);
      } // end of if
    } // end of for
  } // end of main             
} // end of class Taschenrechnertest

Liebe Grüße und vielen Dank im Vorraus
Mimi
 

Anhänge

  • photo.PNG
    photo.PNG
    269,1 KB · Aufrufe: 305
Zuletzt bearbeitet:
Kopier mal den Code hier rein. Benutz den BBC Code für den Code:
Code:
[code] zum öffnen benutzen
dein code

[/code] zum schließen benutzen
 
Ohne den Code genauer angeschaut zu haben: Out-of-Bounds deutet eigentlich auf einen ungültigen Zugriff im Speicher an. Das heißt zum Beispiel, du greifst (in z.B. einer for-Schleife) auf ein Element oder Arrayfeld zu, dass es nicht gibt bzw. nicht erzeugt wurde.
Poste mal deinen Code in ordentlichem Layout, mittels [code ]- und [/code]-Tag.

Edit: Als Tipp: Wähle sprechende Name für deine int-Arrays. Niemand außer dir weiß "direkt", also ohne sich den Code anzuschauen, was "e=xx[o]+z;" bedeuten soll.

Edit2: Wenn ich int[]x = new int[10] erstelle, kann ich auf x[10] zugreifen? Das int-Array hat 10 Elemente, aber diese sind doch von 0 bis 9 nummeriert. Ergo wäre ein Zugriff auf x[10] ein ungültiger Zugriff auf ein Array-Element, welches nicht existiert. Das wäre damit der gemeldete Out-of-bounds.

Edit3: Zum Verständnis der Fehlermeldung.
Exeption in thread "main" java.lang.ArrayIndexOutOfBoundsExeption: 4 at Taschenrechnertest.main<Taschenrechnertest.java:24
Was die 4 bedeutet, ist mir im Moment auch nicht klar. Aber der letzte Hinweis (die "24") bedeutet, dass dein Fehler bzw. der Konflikt der Programms, der zum Absturz führte, in der 24. Zeile zu finden ist. Dort passiert nämlich der erste ungültige Zugriff.
 
Zuletzt bearbeitet:
Ein Array startet bei Index 0 wenn du also von der höchsten Stelle nach unten willst, musst du bei Arraygrösse -1 beginnen. Nicht wie auf deinem Screenshot bei der Arraygrösse...

Und fürs nächste Mal wie bereits erwähnt lieber den Code in den korrekten Tags posten als ein Screenshot

also
Code:
i =anzahlZ-1
 
Zeile 16
Code:
int i=(a.length-1);.

//Beispiel
int [ ] a={1,2,3,4,5};
int i = a.length; //(i ist hier 5, doch das letzte Element ist i[4]=5)
 
vielen Dank! :-) jetzt klappt es :)
Ergänzung ()

vielen dank! :-)
und ja, wird das nächste mal gemacht ;-)
Ergänzung ()

ah super. Vielen Dank!
 
Zurück
Oben