【发布时间】:2020-07-11 09:47:41
【问题描述】:
affine 2
0.62367 -0.40337 0.40337 0.62367 0.00 0.00 0.75
-0.37633 -0.40337 0.40337 -0.37633 1.00 0.00 0.25
scale 500
height 690
width 410
xOffset 134
yOffset 112
name Golden Dragon
从这个文本文件中,我想提取一个名为 affine 且宽度为 2 的数组。 接下来 2 行中以空格分隔的以下值是数组内的值。
我已经能够从文本文件中读取其他变量,但似乎无法找出数组。
到目前为止,这是我的代码:
public FileIfs(File path){
try (BufferedReader ifsReader = new BufferedReader(new FileReader(path))) {
String line = null;
int i = 0; int j = 0;
while((line = ifsReader.readLine()) != null) {
if (line.startsWith("name")) {
name = line.substring(4).trim();
System.out.println("Name: " + name);
}
if (line.startsWith("scale")) {
scale = Double.parseDouble(line.substring(5).trim());
System.out.println("Scale: " + scale);
}
if (line.startsWith("height")) {
height = Integer.parseInt(line.substring(6).trim());
System.out.println("Height: " + height);
}
if (line.startsWith("width")) {
width = Integer.parseInt(line.substring(5).trim());
System.out.println("Width: " + width);
}
if (line.startsWith("xOffset")) {
xOffset = Integer.parseInt(line.substring(7).trim());
System.out.println("xOffset: " + xOffset);
}
if (line.startsWith("yOffset")) {
yOffset = Integer.parseInt(line.substring(7).trim());
System.out.println("yOffset: " + yOffset);
}
if (line.startsWith("affine")) {
int arrLeng = Integer.parseInt(line.substring(6).trim());
System.out.println("Array Length: " + arrLeng);
affine = new double[arrLeng][7];
}
else {
if (line.startsWith(" ")) {
line.trim();
}
String currentLine [] = line.split("\\s+");
if (!line.trim().isEmpty()){
for (String s : currentLine) {
if (!s.trim().isEmpty()) {
affine[i][j++] = Double.parseDouble(s);
}
}
line = ifsReader.readLine();
i++;
j = 0;
}
} //end of ifelse
} //loop through every line of file
ifsReader.close();
}
catch (Exception e) {
System.out.println("could not find file");
} //end of try-catch
}
else 部分的代码是我尝试读取数组的地方。
如果有人可以提供帮助,或者为我指出正确的方向,那就太好了。
谢谢。
【问题讨论】:
标签: java arrays regex bufferedreader