快速提问,我如何将txt文件读入二维数组?我需要将每行分成一个数组,以便以后用它来测量长度和宽度的总和。这将用于生活游戏。
CODE
public P4_Icel_Murad_Life(String fileName) {
Scanner in;
try {
Scanner s = new Scanner(new File("C:/Users/muro0/Desktop/life100.txt"));
int matrix[][] = new int[size][size];
while (s.hasNext()) {
for (int i = 0; i < matrix.length; i++) {
for (int col = 0; col < matrix.length; col++) {
// matrix[i][col] = ;
}
}
}
s.close();
} catch (IOException i) {
System.out.println("Problems..");
}
}
文字文件
20 20
0 2
0 6
0 7
0 10
0 11
0 16
1 0
1 4
1 7
2 6
2 12
2 15
2 19
3 0
3 4
3 14
3 16
3 17
4 0
4 8
4 12
4 14
4 15
5 0
5 2
5 4
5 7
5 13
5 17
6 11
6 14
6 15
6 18
7 4
7 10
7 13
7 14
8 6
8 11
8 12
8 14
8 17
8 19
9 6
9 8
9 13
9 14
10 3
10 10
10 19
11 6
11 7
11 9
11 10
11 17
12 0
12 2
12 12
13 0
13 1
13 7
13 8
13 14
13 15
14 7
14 9
14 12
14 13
14 16
14 18
15 0
15 2
15 6
15 8
15 10
15 11
15 16
15 17
16 2
16 3
16 18
17 2
17 7
17 11
17 13
17 19
18 0
18 5
18 6
18 11
18 12
18 13
18 14
19 3
19 4
19 6
19 8
19 11
19 16
19 17
答案 0 :(得分:2)
所以看起来文本文件包含生命游戏中生命所在的所有对。
你做的是增加&#34; i&#34;每次阅读的价值,但不保证。
相反,以下协议是它看起来的文本文件之一。
其余的线条包含有生命的地方。
因此,您的代码应该更像这样(除了您已经提供的内容之外,不包括异常处理)
public P4_Icel_Murad_Life(String fileName) {
Scanner in;
try {
Scanner s = new Scanner(new File("C:/Users/muro0/Desktop/life100.txt"));
int rows = s.nextInt();
int columns = s.nextInt();
int matrix[][] = new int[rows][columns];
while (s.hasNextInt()) {
int row = s.nextInt();
int col = s.nextInt(); // If this fails the text documnet is incorrect.
matrix[row][col] = 1;
}
s.close();
// At this point all dead cells are 0 and all live are 1
} catch (IOException i) {
System.out.println("Problems..");
}
}
答案 1 :(得分:1)
public int[][] P4_Icel_Murad_Life(String fileName) {
try {
BufferedReader reader = new BufferedReader(new FileReader(new File(fileName)));
// n = Rownum ; m = Colnum
int array[][] = new int[n][m];
String line = reader.readLine();
int i = 0, j = 0;
while (line != null) {
String strArray[] = line.split(" ");
if (!line.trim().isEmpty()) {
for (String s : strArray) {
if (!s.trim().isEmpty()) {
array[i][j++] = Integer.parseInt(s);
}
}
line = reader.readLine();
i++;
j = 0;
}
}
reader.close();
return array;
} catch (IOException ex) {
System.out.println("Problems..");
}
return null;
}
答案 2 :(得分:0)
您对int
值感兴趣,请使用此功能。
此外,hasNextLine
条件已移至行循环中,hasNextInt
条件已添加到列循环。
public P4_Icel_Murad_Life(String fileName) {
Scanner in;
try {
Scanner s = new Scanner(new File("C:/Users/muro0/Desktop/life100.txt"));
int matrix[][] = new int[size][size];
for (int i = 0; i < matrix.length && s.hasNextLine(); i++) {
for (int col = 0; col < matrix.length && s.hasNextInt(); col++) {
matrix[i][col] = s.nextInt() ;
}
s.nextLine(); // col values populated for this row, time to go to the next line
}
s.close();
} catch (IOException i) {
System.out.println("Problems..");
}
}
答案 3 :(得分:0)
您可以使用opencsv来读取和写入此类文件
CSVReader reader = new CSVReader(
new FileReader("C:/Users/muro0/Desktop/life100.txt"), ' ');
// Read all rows at once
List<String[]> allRows = readAll(reader);
它将文件读取到字符串,但您当然可以将其转换为整数。