OutofBounds

P

Paul Anka

Hallo.
Ich habe ein kleines Problemchen.

Hier erstmal der Code:
Code:
public class Notenvergabe 
{
	
	public static void main (String args []){
	
	
	int punkte = Integer.parseInt(args [0] );
         
 
           
                      
         
         System.out.println("Geben Sie die Punkte ein");
		
  {              

if      (punkte >=36 && punkte <=40 ) System.out.println ("ergibt Note 1 ");
else if (punkte >=31 && punkte <=35 ) System.out.println ("ergibt Note 2 ");
else if (punkte >=26 && punkte <=30 ) System.out.println ("ergibt Note 3 ");
else if (punkte >=21 && punkte <=25 ) System.out.println ("ergibt Note 4 ");
else if (punkte >=0  && punkte <=20 ) System.out.println ("ergibt Note 5 ");              


}
}
}
Der Aufruf des Programms soll mittels java Notenvergabe <punkte> erfolgen. Ich weiß nur nicht wie.
Bis jetzt kommt immer beim Ausführen ein indexoutofbounds Fehler. Bitte um Hilfe.
 
Die IndexOutOfBoundsException wird geworfen, wenn du z.B. auf ein Arrayfeld zugreifen willst, das nicht existiert, du greifst also außerhalb des Arraybereiches zu. args ist so ein Array und da du auf das erste Element (args[0]) zugreifen willst und dann die Exception geworfen wird, nehme ich einfach mal an, dass du keinen Parameter beim Programmstart übergeben hast. Ich denke das liegt daran, dass du das Programm wohl mit einer IDE wie Eclipse oder NetBeans geschrieben hast und es auch darin ausführst. Wie man beim Programmstart in deiner IDE angibt, solltest du besser nachgooglen.

Ansonsten gibt es noch die einfache Möglichkeit das Programm über die Kommandozeile zu starten. Einfach die CMD unter Windows oder die Shell unter Linux starten und dann folgendes eintippen:
Code:
java Notenvergabe <punkte>
Das kann z.B. so aussehen:
Code:
java Notenvergabe 40
Natürlich solltest du dafür in der CMD oder Shell in das Verzeichnis wechseln, in dem deine class-Files liegen, also Notenvergabe.class.

EDIT:
Wenn ich mir dein Programm so ansehe, dann vermute ich, dass du das Programm eigentlich so zurechtgedacht hast, dass man das Programm startet und dann die Punkte eingibt. Das wird aber nicht über die Startparameter gemacht, sondern über eine Benutzereingabe. Dazu brauchst du einen Stream, in den der Benutzer Sachen eingeben kann.
Java:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Und dann kann man leicht was einlesen:
Java:
String eingabe = reader.readLine();
Und sobald der Stream nicht mehr gebracht wird, den Stream auch wieder sauber schließen:
Java:
reader.close();
Das nur mal so im Schnelldurchgang. Du solltest dir dazu lieber noch Tutorials im Internet suchen oder mal bei Javainsel vorbeischauen, ein wirklich gutes Buch, das man auch als Openbook online lesen kann.
 
Zuletzt bearbeitet:
Vielen vielen Dank!
Das war mir eine sehr große Hilfe!
Ich stand voll auf dem Schlauch und wusste nicht, dass man einfach nur
java Notenvergabe <punkte> in die CMD eingeben muss. Dannn funktioniert es ja!
Also danke nochmals. Hast das sehr schön verständlich erklärt!
 

Neue Beiträge

Zurück