Bundesliga Go!

Hallöchen,
also ich hab mal einen kleinen Code geschrieben. Doch etwas funktinoiert da noch nicht. Ich führe das in cms aus und wenn ich meine eingabe mach, funktioniert auch alles. Aber wenn ich z.b vergesse eine Jahreszahl einzugeben dann sollte eigentlich ausgegeben werden, dass die Eingabe fehlerhaft war... das funktioniert aber net :bahnhof: was ist da falsch?
Dankeschööön!
Ayva
Java:
public class BundesligaMeister {


	public static void main (String [] args){
		int jahr;
		jahr = Integer.parseInt(args[0]);

		if (args.length == 1){

			switch (jahr){
			case 1995:
			case 1996:
			case 2000:
			case 2002:
				System.out.println("Borussia Dortmund");
				break;
			case 1997:
			case 1999:
			case 2001:
			case 2003:
			case 2005:
			case 2006: 
			case 2008:
				System.out.println("Bayern München");
				break;
			case 1998:
				System.out.println("1.FC Kaiserslautern");
				break;
			case 2004:
				System.out.println("Werder Bremen");
				break;
			case 2007:
				System.out.println("VfB Stuttgart");
				break;

			case 2009:
				System.out.println("VfL Wolfsburg");
				break;

			default: 
				System.out.println("Zu diesem Jahr gibt es leider keine Daten");

			}
		}
		else  {
			System.out.println("Fehlerhafter Programmaufruf! Bitte geben Sie eine Jahreszahl mit an: Java BundesligaMeister <Jahreszahl>");

		}

	}
}
 

Der Müde Joe

Top Contributor
ohne break; im case, fallen die Dinger einfach gegen unten.

Zb 1995 fällt bis 2002
1999 bis 2008

weglassen --> dann kommt der default zum zuge ;-)
 
Zuletzt bearbeitet:
G

Gast2

Gast
Java:
if (args.length == 1){
Du greifst aber vorher schon auf args[0] zu
 

Der Müde Joe

Top Contributor
klar ;-)

1. Zuerst abfragen, ob args.length == 1 ist (wenn genau 1 Argument auf der Kommadozeile, dann 2 sonst else)
2. dann Versuchen das erste Element (args[0]) zu parsen
3. Beten das kein NumberFormatException fliegt

Wo liegt genau dein Problem?

EDIT:
klar: heisst, die Jahre die nicht angegeben sind oder nicht vorher auf was breakiges treffen
 
Mein Problem liegt darin (wobei ich bei Java nicht mehr von Problem rede, sondern von Aufgabe, sonst hört das ;( gar net mehr auf :eek:)

ich gebe in mein Komandofenster ein:
java BundesligaMeister 2002
da spuckt er mir den dann auch aus.
Ich soll aber eine Anweisung mit rein bringen, die ausgibt: (Fehlerhafte Eingabe, bitte geben sie eine Zahl an), wenn ich nur:
java BundesligaMeister
eingebe.
Das hab ich mit else versucht, also wenn die if bedingung nicht wahr ist, soll er auf das else springen. funktioniert aber net
 

Der Müde Joe

Top Contributor
Java:
if(args.length == 1) {
	try{
		int i = Integer.parseInt(args[0]);
		System.out.println(i);
	} catch(NumberFormatException e) {
		System.out.println("keine Zahl");
	}
	//..
} else {
	System.out.println("nix gut");
}
 
Zuletzt bearbeitet:
Mir gehts eher darum, es auch zu verstehen... und ich verstehe nicht warum es so nicht geht...? und ob es nicht so ähnlich gehen könnte, weil deine vorschlog ist zwar ok, aber kann ich so nicht machen, weil wir das so nioch nicht hatten..
vielen dank!
 

Der Müde Joe

Top Contributor
>und ich verstehe nicht warum es so nicht geht...?

Wenn kein Argument übergeben wird, ist das args Array leer. Dann versuchst du auf das erste Element zuzugreifen und es zu parsen. Nun es ist aber kein Element vorhanden.
Folge davon:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

Du willst dann auf ein Element im Array zugreifen, das nicht existiert -> peng

Darum:
zuerst länge abfragen, dann zugreifen und parsen
 

Oben