Hallo.
Ich soll das Spiel Schiffeversenken als Hausaufgabe programmieren, also ohne grafische Oberfläche. Soll alles in der Konsole ausgegeben werden.
Es sollen jetzt für die Zeile in der man angreifen will, Buchstaben eingelesen werden. Diese sind ja vom Typ String. Dann habe ich in der Switchanweisung versucht die Buchstaben in int umzuwandeln. Jetzt möchte ich die entstandenen Int werte dazu einsetzten das entsprechende Array aufzurufen.
Jedoch komme ich nicht dazu zu testen ob das funktioniert, da ich die Fehlermeldung bekomme, dass die variable zeile nicht initialisiert wurde, was ja eigentlich der Fall ist.
ich weiß einfach nicht was ich falsch mache.
ich bin noch Anfängerin und habe mich bis vor ein paar Wochen noch nie mit dem Thema beschäftigt.
Ich hoffe ihr könnt mir helfen
Hier ein Ausschnitt meines Programms:
Ich soll das Spiel Schiffeversenken als Hausaufgabe programmieren, also ohne grafische Oberfläche. Soll alles in der Konsole ausgegeben werden.
Es sollen jetzt für die Zeile in der man angreifen will, Buchstaben eingelesen werden. Diese sind ja vom Typ String. Dann habe ich in der Switchanweisung versucht die Buchstaben in int umzuwandeln. Jetzt möchte ich die entstandenen Int werte dazu einsetzten das entsprechende Array aufzurufen.
Jedoch komme ich nicht dazu zu testen ob das funktioniert, da ich die Fehlermeldung bekomme, dass die variable zeile nicht initialisiert wurde, was ja eigentlich der Fall ist.
ich weiß einfach nicht was ich falsch mache.
ich bin noch Anfängerin und habe mich bis vor ein paar Wochen noch nie mit dem Thema beschäftigt.
Ich hoffe ihr könnt mir helfen
Hier ein Ausschnitt meines Programms:
Java:
public static void attack() {
Scanner s = new Scanner(System.in);
int spalte;
String ergebnis;
String buchstabe;
int zeile;
System.out.println("Bitte geben Sie eine Zeile an, die Sie angreifen wollen:");
/* scannt einen Int Wert als zeile ein*/
buchstabe = s.next();
System.out.println("Bitte geben Sie eine Spalte an, die Sie angreifen wollen:");
/* scannt einen Int Wert als spalte ein */
spalte = s.nextInt();
System.out.println("Was sagt ihr Gegner getroffen oder daneben:");
/*scannt einen String als ergebnis ein*/
ergebnis = s.next();
switch (buchstabe.charAt(0)) {
case 'A':
zeile = 0;
break;
case 'B':
zeile = 1;
break;
case 'C':
zeile = 2;
break;
case 'D':
zeile = 3;
break;
case 'E':
zeile = 4;
break;
case 'F':
zeile = 5;
break;
case 'G':
zeile = 6;
break;
case 'H':
zeile = 7;
break;
case 'I':
zeile = 8;
break;
case 'J':
zeile = 9;
break;
}
/* solange das eingescannte Ergebnis "getroffen" lautet, wird ein X in das Array gesetzt.
Wenn man den Gegner getroffen hat,
wird die while schleife durchgeführt und man darf erneut angreifen,
bis man nicht mehr trifft, dann wird die Schleife beendet.
Fuer daneben wird '0' in das Array feind gesetzt*/
while (ergebnis.equals("getroffen")) {
feind[zeile][spalte] = 'X';
print(feind);
System.out.println("Sie haben getroffen!!!Nochmal angreifen:");
System.out.println("Bitte geben sie eine Zeile an, die Sie angreifen wollen:");
buchstabe = s.next();
System.out.println("Bitte geben sie eine Spalte an, die Sie angreifen wollen:");
spalte = s.nextInt();
System.out.println("Was sagt ihr Gegner getroffen oder daneben:");
ergebnis = s.next();
}
/* wenn das eingescannte Ergebnis daneben lautet,
wird in der Zeile und Spalte die man angreift eine 0 gesetzt.
Im Anschluss wird das Spielfeld des Gegners ausgegeben.*/
if (ergebnis.equals("daneben")) {
feind[zeile][spalte] = '0';
System.out.println("Sie haben nicht getroffen!! Ihr Gegner ist an der Reihe.");
print(feind);
/* wenn das Ergebnis weder daneben noch getroffen lautet wird ausgegeben,
dass die Eingabe ungueltig ist */
} else {
System.out.println("Eingabe ungueltig!");
}
}
Zuletzt bearbeitet von einem Moderator: