我有一个文本文件,如下:
1 1 1 0
0 0 1 0
0 0 1 0
0 9 1 0
我想阅读此内容并逐行将其转换为2D数组。 首先我使用BufferedReader和FileReader,然后将它们变成一维数组。我想添加我的一维数组以添加到我的2D数组中。这是我的代码:
BufferedReader br = new BufferedReader (new FileReader ("num.txt"));
String line;
char[][] maze = new char[8][8];
while ((line = br.readLine() ) != null ){
char[] row = line.toCharArray();
int x = 0;
for (int i = 0; i < row.length; i++) {
maze[x][i] = row[i];
System.out.print(maze[i]);
System.out.printf("%n");
x++;
}
}
我正在尝试获取2D数组,因为我稍后会检查坐标。所以我希望我的2D数组的行由我所拥有的文本文件的每一行确定 但我得到的输出如下:
1
1
1
0
0
0
1
0
0
0
1
0
0
9
1
0
我做错了什么?
答案 0 :(得分:1)
您应该将System.out.printf("%n");
放在for循环旁边。
由于它位于for
循环内,因此在打印每个字符后会打印一个新行。
应该是,
while ((line = br.readLine() ) != null ){
char[] row = line.toCharArray();
int x = 0;
for (int i = 0; i < row.length; i++) {
maze[x][i] = row[i];
System.out.print(maze[i]);
x++;
}
System.out.printf("%n"); //mention this
}
还有一件事,x
的增量不会影响输出序列。
答案 1 :(得分:0)
一个问题是你在for循环中递增x
,并在while循环的每次迭代时将其值重置为0。由于您使用此变量来计算行数,x++
实际上属于for循环之外(但仍在while循环中),并且其初始化为0属于while循环开始之前。
此声明System.out.printf("%n");
存在类似问题。您正在为for循环的每次迭代打印它,因此您在每个字符之间获得一个新行。与上面的x
相同,将此语句移到for循环之外(但仍然在while循环中)。
int x = 0;
while ((line = br.readLine() ) != null )
{
char[] row = line.toCharArray();
for (int i = 0; i < row.length; i++)
{
maze[x][i] = row[i];
System.out.print(maze[i]);
}
System.out.printf("%n");
x++;
}
答案 2 :(得分:0)
BufferedReader br = new BufferedReader(newInputStreamReader(System.in));
char[][] arr = new char[4][4];
int i,j;
for (i=0; i<4; i++) {
String[] str1=br.readLine().split(" ");
for (j=0; j<4; j++) {
arr[i][j] = str1[j].charAt(0);
}
}
for (i=0; i<4; i++) {
for (j=0; j < 4; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}