我正在尝试使用名为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;
}
答案 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);