Hallo,
Ich will ein DotComSpiel (ein Spiel im Stil von SchiffeVersenken) erstellen.
Hierbei muss der User zu Anfang die größe des Spielfeldes bestimmen.
Um die Eingabe ins System zu holen benutze ich die Scanner-Class.
Diese bekommt zwei Koordinaten x und y.
Diese beiden Koordinaten werden dann in ein zweidimensionales Array gepackt und das Spielfeld soll wie gewünscht ausgegeben werden.
NUN HABE ICH FOLGENDE PROBLEME:
Nur die Eingabe der xKoordinate beeinflusst einzig und alleine die Spielfeldgröße!
Die yKoordinate scheint nicht richtig zulaufen, den wenn man ein nicht quadratisches Spielfeld anfordert bekommt man eine Fehlermeldung:
Bitte geben Sie die Zeilenanzahl des Spielfeldes an. - Maximale Zeilenanzahl: 10
7
Bitte geben Sie die Spaltenanzahle des Spielfeldes an. - Maximale Spaltennanzahl: 10
3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at DotComVersenken.spielEinrichten(DotComVersenken.java:56)
at DotComVersenken.main(DotComVersenken.java:71)
Hört sich so an als ob die angeforderte Spielfeldgröße den Rahmen des Arrays sprengen würde, doch ich kann die größe vorher nicht bestimmen dann wäre sie ja anbsolut gesetzt und die Eingaben hätten keine Auswirkungen.
Und wenn die xKoordinate größer ist als die yKoordinate:
Bsp.:
Bitte geben Sie die Zeilenanzahl des Spielfeldes an. - Maximale Zeilenanzahl: 10
4
Bitte geben Sie die Spaltenanzahle des Spielfeldes an. - Maximale Spaltennanzahl: 10
8
Nun erscheint ein 4x4 Spielfeld
Noch ein weiterer Fehler:
Bei einem 8x4 Spielfeld hat er mir diese Meldung an den Kopf geschmissen:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at DotComVersenken.spielEinrichten(DotComVersenken.java:24)
at DotComVersenken.main(DotComVersenken.java:71)
Hier der Code
Ich will ein DotComSpiel (ein Spiel im Stil von SchiffeVersenken) erstellen.
Hierbei muss der User zu Anfang die größe des Spielfeldes bestimmen.
Um die Eingabe ins System zu holen benutze ich die Scanner-Class.
Diese bekommt zwei Koordinaten x und y.
Diese beiden Koordinaten werden dann in ein zweidimensionales Array gepackt und das Spielfeld soll wie gewünscht ausgegeben werden.
NUN HABE ICH FOLGENDE PROBLEME:
Nur die Eingabe der xKoordinate beeinflusst einzig und alleine die Spielfeldgröße!
Die yKoordinate scheint nicht richtig zulaufen, den wenn man ein nicht quadratisches Spielfeld anfordert bekommt man eine Fehlermeldung:
Bitte geben Sie die Zeilenanzahl des Spielfeldes an. - Maximale Zeilenanzahl: 10
7
Bitte geben Sie die Spaltenanzahle des Spielfeldes an. - Maximale Spaltennanzahl: 10
3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at DotComVersenken.spielEinrichten(DotComVersenken.java:56)
at DotComVersenken.main(DotComVersenken.java:71)
Hört sich so an als ob die angeforderte Spielfeldgröße den Rahmen des Arrays sprengen würde, doch ich kann die größe vorher nicht bestimmen dann wäre sie ja anbsolut gesetzt und die Eingaben hätten keine Auswirkungen.
Und wenn die xKoordinate größer ist als die yKoordinate:
Bsp.:
Bitte geben Sie die Zeilenanzahl des Spielfeldes an. - Maximale Zeilenanzahl: 10
4
Bitte geben Sie die Spaltenanzahle des Spielfeldes an. - Maximale Spaltennanzahl: 10
8
Nun erscheint ein 4x4 Spielfeld
Noch ein weiterer Fehler:
Bei einem 8x4 Spielfeld hat er mir diese Meldung an den Kopf geschmissen:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at DotComVersenken.spielEinrichten(DotComVersenken.java:24)
at DotComVersenken.main(DotComVersenken.java:71)
Hier der Code
Code:
import java.util.Random;
import java.util.Scanner;
public class DotComVersenken {
static String [][] dotComs = new String [10][10];
static int xKoordinate;
static int yKoordinate;
public static void spielEinrichten(){
Scanner sc = new Scanner(System.in);
System.out.println("Bitte geben Sie die Zeilenanzahl des Spielfeldes an. - Maximale Zeilenanzahl: 10");
xKoordinate = sc.nextInt(); //
System.out.println("Bitte geben Sie die Spaltenanzahle des Spielfeldes an. - Maximale Spaltennanzahl: 10");
yKoordinate = sc.nextInt(); //
char [][] fieldUser = new char [xKoordinate][yKoordinate];
System.out.print(" ");
for (xKoordinate = 0; xKoordinate< fieldUser.length; xKoordinate++ ){
System.out.printf(" %2d ", xKoordinate+1);
}
System.out.println();
for (int yKoordinate = 0; yKoordinate < fieldUser.length; yKoordinate++){
System.out.print(" +");
for(int xKoordinate = 0; xKoordinate < fieldUser.length; xKoordinate++){
System.out.print("---+");
}
System.out.println();
System.out.printf("%2d|", yKoordinate+1);
for(int xKoordinate = 0; xKoordinate < fieldUser.length; xKoordinate++) {
fieldUser [xKoordinate][yKoordinate] = '@';
System.out.print(" " + fieldUser[xKoordinate][yKoordinate]+ " |");
}//
System.out.println();
}//
}//
public static void main ( String [] args){
spielEinrichten();
}
}
Zuletzt bearbeitet: