我想阅读此文本文件并将数据存储在2D数组中。每个空格应替换为0
,最终矩阵为0和1。发生的问题是Scanner
忽略了所有的空格,只将1放在矩阵中。
这是文本/输入文件。
1111
111111
111 111 1
111111 11 111 11
1111 111 111 111
1 1 11111 111 1 11 11 11111
1111 111 11111111
1111 11111 111 1 11 11111
111 111 1111 111 1111
111 1111 11111 111111
111 11 11 11111 111
1111 11 11111
1111 11111
1111 11 11 1111
111 111 1 111
11 1111 111111
1111 111 1111
1111 111 1111
1111 11 1111 1111
1111 111111 11111
111 11111
1111 1111
扫描仪fileScanner =新扫描仪(新文件(“D:\ Assignment.txt”)); int [] [] inputMatrix = new int [200] [200]; int i = 0,j = 0; while(fileScanner.hasNextLine()){String line = fileScanner.nextLine();扫描仪lineScanner =新扫描仪(线); while(lineScanner.hasNext()){int token = Integer.parseInt(lineScanner.next()); inputMatrix [i] [j] =令牌; //做任何需要用标记j ++做的事情; } lineScanner.close();我++; J = 0; //你在这里的最后一行。做你该做的事。 } fileScanner.close();
答案 0 :(得分:2)
读取线条并将它们转换为2D数组:
List<String> lines = new ArrayList<>();
Scanner sc = new Scanner(new File("array.txt"));
while(sc.hasNextLine()) {
lines.add(sc.nextLine());
}
// to array
int rows = lines.size(); // number of rows
int cols = 0; // number of columns
for(String line : lines) {
cols = Math.max(cols, line.length());
}
int[][] array = new int[rows][cols]; // full of 0s
int i = 0;
for(String line : lines) { // for each line, add the 1s
char[] chars = line.toCharArray();
for(int j = 0 ; j < chars.length ; ++j) {
if(chars[j] == '1') {
array[i][j] = 1;
}
}
i++;
}
答案 1 :(得分:1)
Scanner sc = new Scanner(file);
String input = "";
while (sc.hasNextLine()) {
input += sc.nextLine()+"\n";
}
sc.close();
String[] array = input.split("\n");
现在你有一个行数组,你可以在每个字符串上使用replace(" ", "0")
然后toCharArray()
来创建一个字符数组并将它们全部放在一个新数组中