0

我正在尝试使用名为 resize() 的方法调整 Array[] 的大小。我想我已经正确地编码了该方法,但是原始数组在通过该方法运行后没有调整大小,而且我不确定我做错了什么。

我已经测试过 newArr[] 实际上是 oldArr[] 长度的两倍,并且包含 oldArr[] 的值,但我不知道为什么它不影响主要的 wordList[]方法。

我的任务是使用数组而不是数组列表,所以使用它是不可能的。

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 回答