Java Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

wok

Newbie
Registriert
Sep. 2013
Beiträge
2
Hallo zusammen,
ich bin gerade dabei Java mittels Buch zu lernen (Anfänger).
Bei einem Aufgabenbeispiel erhalte ich jedoch folgende Meldung:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Kreisberechnung3.main(Kreisberechnung3.java:11)

Das Prog sieht so aus.

Aufgabe3.JPG

Kann mir jemand weiterhelfen?

Gruß

wok
 
Die Größe des Arrays, auf das zugegriffen wird, ist nicht wie angenommen. index = 1 bedeutet, dass Array muss mindestens die Länge 2 haben, damit der Zugriff erfolgreich ist.

Du müsstest mithin das Programm anders aufrufen (eben die erwarteten Parameter übergeben).
 
Übergibst du denn die geforderten Parameter? Wenn du das Programm ohne Argumente ausführst ist der Fehler ja klar.
 
Das String-Array args enthält alle Parameterwerte, die du bei Aufruf übergibst. Deine main-Methode geht davon aus, dass du 2 Argumente beim Aufruf übergeben hast. Das ist vermutlich nicht der Fall, entsprechend ist das Array args kleiner und args[1] existiert nicht, weswegen dir Java sagt, dass der Arrayindex, nämlich 1 nicht zulässig ist.

Eine Lösung wäre 2 Parameterwerte bei Programmaufruf zu übergeben, oder die Länge des Arrays zu prüfen, um den Fehler abzufangen.
 
Vermeide irgend welche Nummern im Code ("Magic Numbers"). PI erkennt man vielleicht noch, aber das schreibt man so nicht.

Benutze für Konstanten definierte Werte aus der Mathe Bibliothek. Bei Java sollte das so sein:

Code:
import java.lang.Math;
// Dann Zugriff über: Math.PI
 
Kurz noch zum anhängen:

Generell würde ich empfehlen, am Anfang immer zu überprüfen (sofern du Parameter erwartest), wieviele Parameter übergeben worden sind (ganz einfach indem du prüfst wie gross das args-Array ist). Ganz einfach z.B. mit

Code:
if(args.length > 2){
 System.out.println("Zu viele Parameter beim Start (>2).");
System.exit(-1);
}
else if(args < 2){
 System.out.println("Zu wenig Parameter beim Start (<2).");
System.exit(-1);
}

Sowas in dem Stil. Gerade für kleinere Übungen etc. ist sowas hilfreich und schnell eingetippt. Im Prinzip kannst du den Fehler auch auffangen, indem du den Nutzer nach den Parameter fragst. Wäre z.B. eine super Übung für den Einstieg :)
 
Eggcake schrieb:
Generell würde ich empfehlen, am Anfang immer zu überprüfen (sofern du Parameter erwartest), wieviele Parameter übergeben worden sind (ganz einfach indem du prüfst wie gross das args-Array ist). Ganz einfach z.B. mit [...]

Sowas in dem Stil. Gerade für kleinere Übungen etc. ist sowas hilfreich und schnell eingetippt. Im Prinzip kannst du den Fehler auch auffangen, indem du den Nutzer nach den Parameter fragst.

Speziell für Kommandozeilenparameter gibt es aber natürlich entsprechende Libs, die die Validitätsprüfung der Eingabe erledigen und noch mit wesentlich mehr Features aufwarten. Mein Favorit hier ist http://jcommander.org/
 
Zurück
Oben