[英]turning an array of strings into a 2d array of chars
我的代码从内部写有迷宫的文件中读取输入,文件内部看起来像这样。 7 7 GOOOOXO XXOXOOX OXOOOXX XXXOOXO XXXXOXX SOOOOOX XXXXXXX(它们各自位于单独的行上,不确定在此如何显示)
数字是维度,G是目标S是开始,目前这并不重要。 我将文件逐行读取到Strings数组中。 所以我的数组看起来像这样{“ GOOOOXO”,...,“ XXXXXXX”}现在我想将字符串转换为2d字符数组,其中字符的存储方式与上面显示的迷宫相同。
第一个嵌套的for循环仅读取输入的文件并将每行保存为字符串在数组中,第二个数组用于将字符串转换为字符以将其保存到2d数组中,并且仍然设法保持迷宫的形状。 我得到了数组索引超出范围的异常。 但是,老实说,在被困了几个小时之后,我实在不知所措。
int dimensionsX = input.nextInt();
int dimensionsY = input.nextInt();
String[] lines = new String[dimensionsY];
char[][] maze2 = new char[dimensionsX][dimensionsY];
for (int j = 0; j < dimensionsY; ++j) {
if (input.hasNextLine()) {
lines[j] = input.nextLine();
System.out.println(lines[j]);
//System.out.println(j);
}
}
for (int i = dimensionsX; i > 0; --i) {
for (int j = dimensionsY; j > 0; --i) {
maze2[i][j] = lines[i].charAt(j);
System.out.print(maze2[i][j]);
if (i == lines.length) {
System.out.println();
}
}
}
例如:
int dimensionsX = input.nextInt();
int dimensionsY = input.nextInt();
String[] lines = new String[dimensionsY];
char[][] maze2 = new char[dimensionsY][];
for (int j = 0; j < dimensionsY; ++j) {
if (input.hasNextLine()) {
lines[j] = input.nextLine();
if(lines[j].length()<dimensionsX){
System.err.println("we are doomed. Input malformed in line j: it has less then" + dimensionsX + "characters");
System.exit(1);
}
maze2[j] = lines[j].toCharArray();
System.out.println(lines[j]);
//System.out.println(j);
}else{
System.err.println("we are doomed. Input has too few lines");
System.exit(1);
}
}
//taken as is, but makes me wonder if it is intended to have dimensionsX as the Y coordinate but well...
for (int i = dimensionsX; i > 0; --i) {
for (int j = dimensionsY; j > 0; --j) {
System.out.print(maze2[j-1][i-1]);
}
System.out.println();
}
当然,如果输入的格式不正确(例如抛出异常),您想做的事情与退出程序不同,或者,如果输入始终正确(不?),则什么也不做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.