2016-08-13 5 views
0

私は長さ200の大きな文字列配列を返そうとしていますが、使用するコードは15を返す/実行時に配列長を15に設定します。配列のサイズが変わることがありますので、サイズを変えてみると大きめです。ファイルにバッファリングされたテキストライター

public static String[] populateArray(String fileName) 
{ 
    String [] record = new String [200]; // array length is 200 
    try 
    { 
    FileReader fileReader = new FileReader(fileName); 
    BufferedReader bufferedReader = new BufferedReader(fileReader); 
    String line = null; 
    int counter = 0; 
    int arrayLength = 0; // using this to check length during execution 
    while((line = bufferedReader.readLine())!= null && counter < 200) 
    { 
    record[counter] = line; 
    counter +=1; 
    arrayLength = record[0].length(); // the file contains 20 lines to input here but 
                      only does 15 
    } 
    bufferedReader.close(); 

    } 
    catch (IOException ex) 
    { 
     System.out.println("There was an error while trying to access the file"); 
    } 
    return record; 
} 
+0

'arrayLength = record [0] .length()'の目的は何ですか? 'record [0]'は最初の反復で割り当てられ、それ以降は更新されないので、その行をループ外に移動することができます。なぜなら、 'arrayLength'が入力の最初の行の長さと何らかの関係を持つ理由を見つけることができないからです。 * * – Andreas

答えて

2

ファイルの最初の行は15文字ですか。読み込まれた行の数ではなく、その文字列の長さを調べているように見えます。さらに、arrayLength変数を各ループの繰り返しで同じ値に設定します。

読み込んだ行を数えたい場合は、単にカウンタ変数を出力することをお勧めします。

あなたが投稿したコードは、すべてのファイルの行を読み込み(テストファイルで)動作しているようです。したがって、あなたの問題は、何が読み込まれたのかを確認するために間違った変数を見ていることを推測しています。

+0

P.配列にファイルの行数を一致させる場合は、次のようにcountLines(String filename)メソッドを使用することをお勧めします。 while(line = bufferedReader.readLine())!= null){ lineCount ++; } lineCountを返します。次に、配列を次のように初期化します。 record = new String [countLines( "test.txt")]; – Matt

関連する問題