Java 为什么我会收到这个编译器警告?
我试图从文本块的每一行中获取最长单词的列表。我无法从正在处理的main.class中获取要打印的信息。信息在Tools.class中处理。还有一个涉及的Counters.class,但它是不可变的 但是,它给了我一个警告:在我声明longestWords=h;的行上,本地变量longestWords的值没有在我的计数器代码中使用;。为什么会这样?我该如何修复它 这是我的代码: 加工Java 为什么我会收到这个编译器警告?,java,compiler-warnings,unused-variables,Java,Compiler Warnings,Unused Variables,我试图从文本块的每一行中获取最长单词的列表。我无法从正在处理的main.class中获取要打印的信息。信息在Tools.class中处理。还有一个涉及的Counters.class,但它是不可变的 但是,它给了我一个警告:在我声明longestWords=h;的行上,本地变量longestWords的值没有在我的计数器代码中使用;。为什么会这样?我该如何修复它 这是我的代码: 加工 longestWords = stat.getLongestWords(); for(i = 0; i &
longestWords = stat.getLongestWords();
for(i = 0; i < longestWords.size(); i++){
System.out.print(longestWords.get(i));
}
计数器
public ArrayList<String> getLongestWords(){
return longestWords;
}
public Counters(int a, double b, int c, int d, double e, double f, String g, ArrayList<String> h){
lineCount = a;
avgWordCount = b;
wordCount = c;
purchaseCount = d;
moneySpent = e;
avgSpent = f;
longestWord = g;
ArrayList<String> longestWords = h;
}
初始化变量与使用变量不同,当您使用变量打印变量、将其传递给方法等时,警告将消失 基本上,这与说:
int i = 0;
然后什么也不跟我做
声明
ArrayList<String> longestWords = h;
另一个批评是,你从未声明变量i,但你试图将它赋值。您需要更改以下内容:
for(i = 0; i < longestWords.size(); i++)
到
Java变量有一个称为作用域的东西。在方法中声明的变量(如longestWords变量)是局部变量。其范围仅限于该方法。这意味着在该方法之外,该方法中声明的最长单词的定义不存在。您正试图从声明局部变量的方法外部访问该局部变量。根据定义,局部变量不存在于声明它的方法之外 如果要在多个方法中使用变量,则需要在任何方法之外声明它,使其成为全局变量
如果有一个局部变量被声明为与全局变量同名,则该变量名将引用方法内的局部变量,并引用方法外的全局变量,因为局部变量在声明它的方法外不存在。因此,如果您在方法内部初始化该变量,它将不会影响全局变量的值。您有什么问题?这只是一个警告,您永远不会使用该变量。我无法在我的处理类中打印数组的内容。它给了我nullpointerexception。我注意到我打印错了。我将打印代码改为使用longestWords.geti,但现在它抛出了NullPointerException。欢迎使用StackOverflow!问问题时,请把你的问题说清楚。我已经尝试编辑,以使唯一的问题尽可能清楚,但如果您自己编辑,使您的意图众所周知,将不胜感激。看看,包括实际的错误,您的代码和问题。这就是问题所在,谢谢!我只需要从longestWords=h中删除ArrayList;伟大的那么请接受我的回答:
longestWords = h;
for(i = 0; i < longestWords.size(); i++)
for(int i = 0; i < longestWords.size(); i++)
ArrayList<String> longestWords = h;
longestWords = h;