2013-05-31 85 views
0

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

我测试了newArr []实际上是oldArr []长度的两倍,并包含oldArr []的值,但我无法弄清楚它为什么没有对wordList [ ]主要方法。

我的任务是使用数组而不是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; 

} 
+6

尝试wordList = resize(wordList); – pad

+0

请参阅Fouads答案,您的方法会立即返回被丢弃的内容,您需要将您的单词表指向返回值。 – arynaq

回答

0

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

String[] temp = resize(wordList); 
4
if(count == wordList.length) 
     resize(wordList); 

应该是:

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

详情请参阅this answer

+1

+1击败了我。 – arynaq

+0

做了修复,它运行完美。谢谢! – user2417852

1

正如@pad在他的评论中所说:你不会赞成wordList

而你的resize()方法返回一个新的数组。因此,您应该注意wordList

作为一般说明,数组在Java中不可调整大小。