Immer wiederkommende Fehlermeldung

Von: , Frage gestellt am Mi, 3. Jun 2009

Ich bin grad dabei Java zu erlernen und im moment stoße ich auf folgendes Problem und versuche es zu lösen bisher ohne erfolg:
hier die Fehlermeldung: Das System konnte den angegeben Pfad nicht finden //woran das liegt weiß ich nicht

"Exception in thread "main" java.lang.ArrayIndexOutofBOundsException: 0
at the Bere.main(Bere.java:9)

hier ist der code dazu:

class Bere
{
public static void main (String[]args)
{
int x=0;
int a;
int y=0;

x=Integer.parseInt(args[0]);
y=Integer.parseInt(args[1]);
a=x+y;

if (a<0)
{
System.out.println("Aha");
}
else
{
System.out.println("oha");
}
}
}

könnt ihr mir sagen wo der Fehler liegt ich hab die datei unter
Bere.java abgespeichert (falls das was hilft).

Hoffe ihr könnt mir helfen

Danke
Mfg Linden

6 Antworten zu dieser Frage

  1. Antwort von nach 16 Minuten 0 hilfreich
    Re: Immer wiederkommende Fehlermeldung

    hier die Fehlermeldung: Das System konnte den angegeben Pfad
    nicht finden //woran das liegt weiß ich nicht

    "Exception in thread "main"
    java.lang.ArrayIndexOutofBOundsException: 0
    at the Bere.main(Bere.java:9)
    Die Fehlermeldung sagt doch alles aus, was du wissen musst:
    Array-Überschreitung in Zeile 9 von Bere.java.

    Das ist diese Zeile hier: x=Integer.parseInt(args[0]);
    Hier wird versucht auf das erste Element des Arrays "args" zuzugreifen und dieses als Integer zu parsen. Wenn es hier zu einer Array-Ueberschreitung kommt, dann ist das Array offensichtlich leer.

    Da das Array die Kommandozeilen-Parameter deines Programms enthaelt, hast du offensichtlich keine angegeben. Also musst du dich auch nicht wundern, dass du den Fehler kriegst. Gib doch einfach mal beim Aufruf die zwei von deinem Proramm geforderten Parameter an, dann kommt es auch nicht mehr zu obiger Fehlermeldung.

    • Antwort von nach 22 Minuten 0 hilfreich
      Re^2: Immer wiederkommende Fehlermeldung

      also wenn ich das richtig verstanden habe ist mein array leer?? muss ich dann aus der Null zb ne 20 machen?
      Ich kann bisher ja nichts eingeben.

      Danke
      Mfg Linden

      • Antwort von nach 32 Minuten 0 hilfreich
        Re^3: Immer wiederkommende Fehlermeldung

        also wenn ich das richtig verstanden habe ist mein array
        leer?? muss ich dann aus der Null zb ne 20 machen?
        Nein. Die 0 in args[0] gibt die Stelle im Array an, auf die du zugreifst. Wenn du da ne 20 hinschreibst, dann greifst du auf die 21. Stelle im Array zu und die ist sicherlich ebenfalls nicht existent, wenn dein Array leer ist.

        Du sollest dir erstmal nochmal zu Gemüte führen was Arrays sind und wie man sie benutzt. Ich kann bisher ja nichts eingeben.
        In dem args-Array stecken die kommandozeilene-Parameter. Das sind die Parameter die du deinem Programm beim Starten mitgeben kannst, in dem du sie hinter dem Klassennamen auflistest, also z.B. mit "java Bere param1 param2" startest.

        • Antwort von nach einer Stunde 0 hilfreich
          Re^4: Immer wiederkommende Fehlermeldung

          ich kenne Array nur von C++ her ich bin es gewöhnt diese Array fest zu deklarieren was hier nicht der fall ist. wenn ich jetzt das einscannen der zahl mit array [0] mache müsste der zweite array auf zB [5] gehn?
          Ich bin grad am lernen von Java und habe dazu nur das Grundlagen handbuch vom Herdt verlag mit den dazugehörigen Programmen,.

          • Antwort von nach 4 Stunden 0 hilfreich
            Re^5: Immer wiederkommende Fehlermeldung

            ich kenne Array nur von C++ her ich bin es gewöhnt diese Array
            fest zu deklarieren was hier nicht der fall ist.
            Bei C++ sind Arrays afaik nicht fest deklariert, da Arrays da einfach nur Pointer auf das erste Element im Array sind. Das hinauslesen über die eigentlichen Arraygrenzen hinweg ist ja gerade die Fehlerquelle für Buffer-Overflows in C/C++ Programmen.
            In Java dagegen sind Arrays immer fest deklariert. Die Arraylänge kannst du mit der Eigenschaft array.length abfragen. wenn ich
            jetzt das einscannen der zahl mit array [0] mache müsste der
            zweite array auf zB [5] gehn?
            Nein. Wieso?
            Du hast nur ein Array und das heißt offensichtlich args. Das wird dir in der main() methode übergeben, genau wie in C/C++ dir in der main-Methode dir dies übergeben wird.
            In C/C++ wird dir zusätzlich die Länge des Arrays übergeben als extra Parameter der main-Methode, da ein Array eben nur ein Pointer ist in C.
            In Java ist die Länge wie gesagt in der Eigenschaft 'length' des array-Objekts enthalten, da Arrays hier richtige Objekte sind.

            Der zweite Parameter steht also nicht in array[5], sondern immer in array[1]. Genau wie in C/C++.

            • Antwort von nach 21 Stunden 0 hilfreich
              Re^6: Immer wiederkommende Fehlermeldung

              Habe meinen Fehler gefunden.Es liegt daran das ich nur ein PArameter einlesen lassen kann.Ich lass es mit TextPad laufen da kann ich nur ein Parameter einlesen lassen wenn es weitere Möglichkeiten gibt hab ich diese noch nicht gefunden.

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!