数组未调整大小

时间:2013-05-31 18:45:32

标签: java

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

我已经测试过newArr []实际上是oldArr []长度的两倍并且包含oldArr []的值,但是我无法弄清楚为什么它没有对wordList []产生影响在主要方法中。

我的任务是使用Arrays而不是Arraylists,所以使用它是不可能的。

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;

}

3 个答案:

答案 0 :(得分:4)

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

应该是:

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

有关详细信息,请参阅this answer

答案 1 :(得分:1)

正如@pad在评论中所说:你没有向wordList求助。

您的resize()方法会返回 new 数组。因此,您应该重新wordList

总的来说,数组在Java中不可调整大小。

答案 2 :(得分:0)

因为您没有将返回的数组赋值给任何东西。必须如下。

String[] temp = resize(wordList);