Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我会收到这个编译器警告?_Java_Compiler Warnings_Unused Variables - Fatal编程技术网

Java 为什么我会收到这个编译器警告?

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 &

我试图从文本块的每一行中获取最长单词的列表。我无法从正在处理的main.class中获取要打印的信息。信息在Tools.class中处理。还有一个涉及的Counters.class,但它是不可变的

但是,它给了我一个警告:在我声明longestWords=h;的行上,本地变量longestWords的值没有在我的计数器代码中使用;。为什么会这样?我该如何修复它

这是我的代码:

加工

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;