Java数组和拆分方法

时间:2017-01-28 19:55:04

标签: arrays split

每一行代表长度,宽度和深度,我无法操纵数组,因为我必须将这些数字相乘才能找到音量。 我已经阅读了文本文件并使用split方法读取每个数字。我想用另一种方法做的就是操纵数据,这样我就可以找到基本上乘以每列数的音量。 Data File:

enter image description here

以下是我如何阅读和拆分方法:

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(" ");
    }

}

然后我不知道如何操纵数据。

1 个答案:

答案 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 ) ); }