0

resize() というメソッドを使用して Array[] のサイズを変更しようとしています。メソッドを正しくコーディングしたと思いますが、メソッドを実行した後に元の配列のサイズが変更されず、何が間違っているのかわかりません。

newArr[] が実際には oldArr[] の 2 倍の長さであり、oldArr[] の値が含まれていることをテストしましたが、メインの wordList[] に影響を与えない理由がわかりません方法。

私の課題は、Arraylist ではなく Array を使用することなので、それを使用することは問題外です。

infile = new BufferedReader( new FileReader(infileName) );
while (infile.ready()) {

    String s = infile.readLine();
    System.out.println(wordList.length);
    System.out.println(count);
    wordList[count] = s;

    if(s.length() > lenOfLongest)
        lenOfLongest = s.length();

    if(s.length() < lenOfShortest)
        lenOfShortest = s.length();

    count++;

    if(count == wordList.length)
            resize(wordList);
}

private static String[] resize( String[] oldArr ) {
    String[] newArr = new String[oldArr.length * 2];
    System.out.println(newArr.length);

    for(int i = 0;i < oldArr.length; i++) {
        newArr[i] = oldArr[i];
    }

    return newArr;

}
4

3 に答える 3

4
if(count == wordList.length)
        resize(wordList);

次のようにする必要があります。

if(count == wordList.length)
        wordList = resize(wordList);

詳細については、この回答を参照してください。

于 2013-05-31T18:47:27.633 に答える
1

@pad がコメントで述べているように、wordList.

そして、あなたのresize()メソッドは新しい配列を返します。したがって、再評価する必要がありますwordList

一般的な注意として、Java では配列のサイズを変更できません。

于 2013-05-31T18:48:08.147 に答える
0

返された配列を何にも代入していないため、次のようにする必要があります。

String[] temp = resize(wordList);
于 2013-05-31T18:47:23.167 に答える