2017-01-28 14 views
-2

各行は、ボリュームを見つけるために番号を掛けなければならないため、配列の操作に問題があります。 私は既にテキストファイルを読んで、splitメソッドを使って各番号を読みました。私が他の方法でしたいのは、データを操作して、基本的に各列番号を掛けているボリュームを見つけることだけです。 Data File:Javaの配列と分割方法

enter image description here

相続人I読み取りおよび方法分割方法:

パブリック静的ボイドFileReaderの(文字列のファイル名)にFileNotFoundExceptionをスローは、IOException { FileReaderのFR =新規FileReader(ファイル名)。 BufferedReader textReader =新しいBufferedReader(fr);

String currLine; 
    String [] val; 
    while((currLine = textReader.readLine()) != null){ 
     System.out.println (currLine); 
     val = currLine.split(" "); 
    } 

}

そして私は、データを操作する方法は考えています。

+4

ようこそ!残念ながら、あなたの質問はやや漠然としている/答えが難しいです。あなたの質問を編集して、サンプル入力、予想される出力、今までに得たコードを追加してください。 –

+0

あなたが望むのであれば、私はあなたが求めているものを読むことができるようにファイルをリンクすることができます。私はちょうど助けが必要な答えを求めていません。 – Alan

答えて

0

まず、valの前の配列への参照は、whileループのためにファイルの新しい行ごとに上書きされるため、読み込み後の最初の行と2行目のsplit()から返された配列にアクセスすることはできませんファイルを完全に。

: 一つは、 (1)値と結果 を得るためにその配列から適切な三つの値(3)を乗算リードを格納する二次元二重アレイを使用する((2)及び を構文解析)することができます
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)); 
    } 

この印刷物の一覧[72.0, 211.25, 38.4, 24.0, 10.5]

関連する問題