【发布时间】:2019-02-15 01:48:30
【问题描述】:
我的代码从一个内部写有迷宫的文件中读取输入,文件内部看起来像这样。 7 7 咕咕咕 XXOXOOX OXOOOOXX XXXOOXO XXXOXX 太棒了 XXXXXXX(这些都在一个单独的行中,不知道如何在此处显示)
数字是维度,G 是目标,S 是开始,现在这并不重要。我将文件逐行读入字符串数组。所以我的数组看起来像这样 {"GOOOOXO",...,"XXXXXXX"} 现在我想将字符串转换为 2d 字符数组,其中字符的存储方式与上面显示的迷宫相同。
第一个嵌套 for 循环只是读取文件输入并将每一行保存为数组中的字符串,第二个数组旨在将字符串转换为字符以将它们保存到二维数组中,并且仍然设法保持形状迷宫。我得到一个数组索引越界异常。但老实说,在被困在这个问题上几个小时后,我的大脑被炸了,我无法弄清楚我的问题。
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();
}
}
}
【问题讨论】:
-
基本上:maze2[j]=input.nextLine().toCharArray(); (您可能需要做一些额外的错误检查)
-
这实际上对我没有帮助,在第一个 forloop 中,我将输入保存在字符串数组中,在 for 循环中我的代码的底部,我试图获取这些字符串并分隔每个字符串,以便我以保持迷宫形状的方式将每个字符分别保存在 2D 字符数组中。我不确定你的评论是想做什么。是否像在 char 数组中一样将输入保存为字符?
-
每个输入文件都有不同的迷宫,行数和列数已经给我们了。这就是为什么我把它设置成这样。现在我已经解决了这个问题,我得到了一个数组索引越界异常
-
是的,我忽略了代码中的一个问题并复制了它,内部循环需要递减 j 而不是 i。 "for (int j = dimensionsY; j > 0; --i) {" -> "for (int j = dimensionsY; j > 0; --j) {"
标签: java string multidimensional-array char type-conversion