Java 数组未调整大小
我正在尝试使用名为resize()的方法调整数组[]的大小。我想我已经正确地编码了这个方法,但是在运行了这个方法之后,原始数组没有调整大小,我也不确定我做错了什么 我已经测试过newArr[]的长度实际上是oldArr[]的两倍,并且包含oldArr[]的值,但是我不明白为什么它不影响main方法中的wordList[] 我的任务是使用数组而不是ArrayList,所以使用它是不可能的Java 数组未调整大小,java,Java,我正在尝试使用名为resize()的方法调整数组[]的大小。我想我已经正确地编码了这个方法,但是在运行了这个方法之后,原始数组没有调整大小,我也不确定我做错了什么 我已经测试过newArr[]的长度实际上是oldArr[]的两倍,并且包含oldArr[]的值,但是我不明白为什么它不影响main方法中的wordList[] 我的任务是使用数组而不是ArrayList,所以使用它是不可能的 infile = new BufferedReader( new FileReader(infileName)
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;
}
infle=newbufferedreader(newfilereader(infleename));
while(infle.ready()){
字符串s=infle.readLine();
System.out.println(wordList.length);
系统输出打印项次(计数);
字表[count]=s;
如果(s.length()>lenOfLongest)
lenOfLongest=s.长度();
如果(s.长度()
因为您没有将返回的数组分配给任何对象。必须如下所示
String[] temp = resize(wordList);
因为您没有将返回的数组分配给任何对象。必须如下所示
String[] temp = resize(wordList);
应该是:
if(count == wordList.length)
wordList = resize(wordList);
有关更多详细信息,请参阅
应该是:
if(count == wordList.length)
wordList = resize(wordList);
有关更多详细信息,请参见。正如@pad在其评论中所说:您不能重新分配到
单词列表
您的resize()
方法将返回一个新数组。因此,您应该重新评估单词列表
一般来说,数组在Java中是不可调整大小的。正如@pad在他的评论中所说:您不需要重新分配到单词列表
您的resize()
方法将返回一个新数组。因此,您应该重新评估单词列表
一般来说,数组在Java中不可调整大小。try wordList=resize(wordList);看到Fouads的答案,你的方法会返回一些立即被丢弃的东西,你需要将你的单词列表指向返回值。try wordlist=resize(wordlist);请看Fouads的答案,您的方法返回的是立即丢弃的内容,您需要将您的单词列表指向返回值。