我是Java新手。我有一个包含以下内容的文本文件。
`trace` - structure( list( "a" = structure(c(0.748701,0.243802,0.227221,0.752231,0.261118,0.263976,1.19737,0.22047,0.222584,0.835411)), "b" = structure(c(1.4019,0.486955,-0.127144,0.642778,0.379787,-0.105249,1.0063,0.613083,-0.165703,0.695775)) ) )
现在我想要的是,我需要将“a”和“b”作为两个不同的数组列表。
答案 0 :(得分:7)
您需要逐行读取文件。它是用这样的BufferedReader
来完成的:
try {
FileInputStream fstream = new FileInputStream("input.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
int lineNumber = 0;
double [] a = null;
double [] b = null;
// Read File Line By Line
while ((strLine = br.readLine()) != null) {
lineNumber++;
if( lineNumber == 4 ){
a = getDoubleArray(strLine);
}else if( lineNumber == 5 ){
b = getDoubleArray(strLine);
}
}
// Close the input stream
in.close();
//print the contents of a
for(int i = 0; i < a.length; i++){
System.out.println("a["+i+"] = "+a[i]);
}
} catch (Exception e) {// Catch exception if any
System.err.println("Error: " + e.getMessage());
}
假设您的"a"
和"b"
位于文件的第四行和第五行,则需要在满足这些行时调用一个方法,该方法将返回double
的数组:
private static double[] getDoubleArray(String strLine) {
double[] a;
String[] split = strLine.split("[,)]"); //split the line at the ',' and ')' characters
a = new double[split.length-1];
for(int i = 0; i < a.length; i++){
a[i] = Double.parseDouble(split[i+1]); //get the double value of the String
}
return a;
}
答案 1 :(得分:2)
你可以玩拆分。首先在文本中找到与“a”(或“b”)匹配的行。然后做这样的事情:
Array[] first= line.split("("); //first[2] will contain the values
然后:
Array[] arrayList = first[2].split(",");
您将拥有arrayList []中的数字。小心最后的括号)),因为它们后面有一个“,”。但那是代码净化,这是你的使命。我给了你这个主意。