Immer wiederkommende Fehlermeldung

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

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.

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

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.

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,.

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++.

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.