每一行代表长度,宽度和深度,我无法操纵数组,因为我必须将这些数字相乘才能找到音量。 我已经阅读了文本文件并使用split方法读取每个数字。我想用另一种方法做的就是操纵数据,这样我就可以找到基本上乘以每列数的音量。 Data File:
以下是我如何阅读和拆分方法:
public static void fileReader(String filename)抛出FileNotFoundException,IOException { FileReader fr = new FileReader(filename); BufferedReader textReader = new BufferedReader(fr);
String currLine;
String [] val;
while((currLine = textReader.readLine()) != null){
System.out.println (currLine);
val = currLine.split(" ");
}
}
然后我不知道如何操纵数据。
答案 0 :(得分:0)
首先,由于while循环,对http://
中前一个数组的引用被覆盖了文件中的每一个新行,因此你无法访问split()返回的第一个和第二个数组完全读完文件后排队。
可以使用二维双数组来存储读取(和解析的(2))值(1)并将该数组中相应的三个值相乘以得到结果(3):
val
打印 String currLine = null;
int numberOfEntries = 0;
double[][] values = new double[3][]; // (1)
for ( int i = 0; i < 3 && ( currLine = textReader.readLine() ) != null; i++ ) {
String[] valuesInLine = currLine.split( " " );
// Check whether every line contains the same number of numbers (except for first iteration)
if ( i != 0 && numberOfEntries != valuesInLine.length ) {
// for instance throw an exception...
}
numberOfEntries = valuesInLine.length;
double[] valuesInLineParsed = new double[numberOfEntries];
for ( int j = 0; j < numberOfEntries; j++ )
valuesInLineParsed[j] = Double.parseDouble( valuesInLine[j] ); // (2)
values[i] = valuesInLineParsed;
}
// Check whether the previous for loop counted to 3 and did not abort because of textReader.readLine() returning null
if ( currLine != null ) {
double[] results = new double[numberOfEntries];
for ( int i = 0; i < numberOfEntries; i++ )
results[i] = values[0][i] * values[1][i] * values[2][i]; // (3)
System.out.println( Arrays.toString( results ) );
}