我需要将txt文件读入2D数组。
我的txt文件是一个代表墙,路径和外部的字符块。
它是一个硬编码的迷宫,所以角色必须以与文件相同的配置读入数组。
我试过多种方法,但我无法绕过它 继承人的代码public static void main(String[] args) {
File file = new File("//Mac//Users//Tucker//SPSU//Programming 2//mazehardcode");
Scanner fileScanner = new Scanner(file);
String mazeCode = fileScanner.nextLine();
char buffer [][]= new char[80][80];
new Thread(new Monitor()).start();
while (fileScanner.hasNextLine()){
for(int i = 0;i<buffer.length;i++){
for(int j = 0;j<buffer[i].length;j++){
}
}
}
多数民众赞成我可以毫无错误地获得,所以我需要帮助 我得到的错误与将字符串转换为char,或char转换为char [] []或其他任何行。
答案 0 :(得分:1)
如果您的tilemap在文件中查找如下:
11111
10001
11101
10001
11111
您可以读取每一行并遍历每个字符并将其分配给char buffer[][]
。
int currentLine = 0;
while (fileScanner.hasNextLine()){
String line = fileScanner.nextLine();
for(int i = 0;i<line.length();i++){
buffer[currentLine][i] = line.charAt(i);
}
currentLine++;
}
如果只将它存储在一行中:
1111110001111011000111111
你可以做一些模数和除法。 编辑:仅在贴图的宽度与缓冲区的长度相同时才有效
if(fileScanner.hasNextLine()){
String line = fileScanner.nextLine();
for(int i = 0;i<line.length();i++){
buffer[i/buffer.length][i%buffer.length] = line.charAt(i);
}
}
但是要注意水平的实际大小,所以如果大小会有所不同,也许你会在第一行中看到它的大小。
答案 1 :(得分:0)
如果您需要从文件中读取字符块,如下面的示例提及。
#########
#0000111#
#########
将String转换为Char数组后,可以使用System.Arraycopy将整行复制到缓冲区中。
int lineCount=0;
while (fileScanner.hasNextLine()){
String line = fileScanner.nextLine();
System.arraycopy(line.toCharArray(),0,buffer[lineCount++],0,line.length());
}