我的代码从内部写有迷宫的文件中读取输入,文件内部看起来像这样。 7 7 咕咕 XXOXOOX OXOOOXX XXXOOXO XXXXOXX 超音速 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();
}
}
}
答案 0 :(得分:0)
例如:
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();
}
当然,如果输入格式错误,例如,您想做的事情与退出程序不同。抛出异常,或者如果您的输入总是正确的,则什么也不做(是吗?)。