我有一个文件,该文件具有x * y数字,例如12行和21列 从外部文件开始,就这样
BufferedReader jack =
new BufferedReader(new FileReader("/root/Desktop/woop.txt"), 32768);
//StringBuilder comfy = new StringBuilder();
String line = null;
while ((jack.readLine()) != null) {
line = jack.readLine();
}
//System.out.println(comfy.toString());
String[] strs = line.trim().split("\\s+");
for (int fes=0;fes<511;fes++) {
System.out.println("this is fes"+ Integer.parseInt(strs[fes]));
}
System.out.println("this is strs " );
for (int i = 0; i < size; i++) {
for (int j = 0; j < size2; j++) {
//System.out.println(jack.read());
arr[i][j] = Integer.parseInt(strs[j]);
//System.out.println("this is reader "+arr[i][j] + " "+ i +" " + j);
}
}
}
我需要的是将它们放入多维数组中
arr
当我打电话给arr[2][5]
和arr[3][5]
时,我分别得到76和76,我分别想要76和55
答案 0 :(得分:0)
问题在于您仅使用j
来获取要解析的字符串,因此基本上将数组的第一行复制到所有其他行。
您需要考虑到应该位于的行,然后用于计算输入数组strs
中位置的公式为
(row number) * (length of one row) + (offset in row)
或者在您的特定情况下,您希望将parseInt(strs[j])
替换为parseInt(strs[i*size2 + j])
答案 1 :(得分:0)
您遇到的问题是,您正在while循环中读取整个文件,但只保存了最后一行。另外,由于Jack.readline()
会读取一行并继续前进,因此您要注意不要在您的状态检查中丢失该行。如果您在阅读每一行时都处理起来比较容易。看起来可能像这样:
BufferedReader jack =
new BufferedReader(new FileReader("/root/Desktop/woop.txt"), 32768);
String line = jack.readLine();
int rowNum = 0;
while (line != null) {
String[] strs = line.trim().split("\\s+");
int colNum = 0;
for (String s : strs){
arr[rowNum][colNum]=Integer.parseInt(s);
colNum++;
}
line = jack.readLine();
rowNum++;
}
}