Hallo, ich versuche gerade ein Programm zu schreiben das relativ simpel sein sollte, ich habe aber gerade besonders Probleme mit dem Einlesen eines Strings. Ich muss nämlich einen String mithilfe eines Konstruktors in ein verschachteltes Array mit Enum Einträgen umwandeln.
Der String woll immer so aussehen (die erste Zahl ist die Breite und die zweite die Höhe des Labyriths):
Mein Code zum erstellen eines Objektes das diesen String einließt lautet folgendermaßen:
Jetzt lande ich aber bei jeder einzelnen Stelle im String auf meinem "Error in Maze Constructor". Habe schon mehrfach mit dem Zahlen im substring Befehl rumgespielt aber immer den gleichen Fehler behalten. Denkanstöße wären sehr hilfreich!
Der String woll immer so aussehen (die erste Zahl ist die Breite und die zweite die Höhe des Labyriths):
Code:
String m1 = "33 33\n"
+ "#########e#######################\n"
+ "# # # #\n"
+ "# ######### ### ### ### ##### # #\n"
+ "# # # # # # # # # # # #\n"
+ "# # ### # ####### # # # # # # # #\n"
+ "# # # # # # # # # # # #\n"
+ "# # # ####### # ### # # # # ### #\n"
+ "# # # # # # # # # # #\n"
+ "# # ##### # # ##### # ####### # #\n"
+ "# # # # # # # # #\n"
+ "##### # # # ##### # # # #########\n"
+ "# # # # # # # # # # # #\n"
+ "# # # # # ####### # # # ### # # #\n"
+ "# # # # # # # # # #\n"
+ "# ### # ### ####### # ######### #\n"
+ "# # # # # # # # # #\n"
+ "# # ### # # # ### # # # ### # ###\n"
+ "# # # # # # # # # # #\n"
+ "### ########### ##### # ####### #\n"
+ "# # # # # # #\n"
+ "# ### ### # ##### ##### # # # # #\n"
+ "# # # # # # # # # # # #\n"
+ "# # # # ####### ##### # # # ### #\n"
+ "# # # # # # # # #\n"
+ "# ### # # ####### # # ####### ###\n"
+ "# # # # # # # # # #\n"
+ "### # # ##### ##### # # ####### #\n"
+ "# # # # # # # #\n"
+ "# # ##### ##### # ### # ####### #\n"
+ "# # # # # # # # # #\n"
+ "# ##### # # # # ### # # # ### ###\n"
+ "# # # # # # # #\n"
+ "#######################E#########" ;
Mein Code zum erstellen eines Objektes das diesen String einließt lautet folgendermaßen:
Code:
public class Maze {
public MazeEntry[][] map ;
public int rows ;
public int columns ;
//Konstruktor
public Maze(String blueprint) {
String s = blueprint.substring(0 , 5) ;
String[] snumbers = s.split("\\s") ;
int[] inumbers = new int[snumbers.length] ;
for (int i = 0 ; i < inumbers.length ; i++) {
inumbers[i] = Integer.parseInt(snumbers[i]) ;
}
int rows = inumbers[0] ;
int columns = inumbers[1] ;
MazeEntry[][] map = new MazeEntry[rows][columns] ;
// i Zeile, j Spalte
String currentrow ;
for (int i = 0 ; i < rows ; i++) {
currentrow = blueprint.substring( 7 + i * columns , 7 + i * columns + columns) ;
char[] symbols = currentrow.toCharArray() ;
for (int j = 0 ; j < columns ; j++) {
if (String.valueOf(symbols[j]) == "#") {
map[i][j] = MazeEntry.WALL ;
}
if (String.valueOf(symbols[j]) == " ") {
map[i][j] = MazeEntry.PATH ;
}
if (String.valueOf(symbols[j]) == "e") {
map[i][j] = MazeEntry.ENTRY ;
}
if (String.valueOf(symbols[j]) == "E") {
map[i][j] = MazeEntry.EXIT ;
} else {
System.out.printf("Error in Maze Constructor") ;
}
}
}
}
}
Jetzt lande ich aber bei jeder einzelnen Stelle im String auf meinem "Error in Maze Constructor". Habe schon mehrfach mit dem Zahlen im substring Befehl rumgespielt aber immer den gleichen Fehler behalten. Denkanstöße wären sehr hilfreich!