Java变量可能尚未初始化。但它应该是

时间:2014-04-11 15:38:10

标签: java

我使用变量line,该方法变为lineOld后。因此,第一次运行方法lineOld未定义。

因此,在编译时,我可能没有初始化错误变量lineOld

我曾尝试仅为lineOld提供一次价值(请先查看forwhile),但不要去。

任何帮助:)?

String inputLine;
String lineOld;
String line = "";
int test = 0;

for (int i = 0; i == 0; i++) {
    lineOld = "";
}

while (test == 0) {
    lineOld = "";
    test++;
}

while ((inputLine = in.readLine()) != null) {
    line = line + inputLine;
}

System.out.println(line);

if (line == lineOld) {
    System.out.println("No difference");
} else {
    System.out.println("VERSCHIL");
}

lineOld = line;

6 个答案:

答案 0 :(得分:3)

只需将lineOld初始化为某个虚拟变量,""null

答案 1 :(得分:2)

编译器指出它,因为for / while块有可能不执行,这意味着lineOld没有被初始化。它正在寻找你在一个区块外初始化它。

答案 2 :(得分:1)

在初始化时将lineOld设置为null

String lineOld = null;

答案 3 :(得分:1)

这里的根本问题是(就编译器而言),此代码可能会遵循一条路径,导致lineOld在使用之前未被初始化。

要解决此问题,您需要在条件构造之外对其进行初始化。

String lineOld = "";

“因为这种方法不断重复,所以我不希望每次都重置lineOld。”

在这种情况下,将lineOld传递给此方法。检查传入的lineOld是否有值,并将本地lineOld初始化为它。如果传入的lineOld没有值,则将本地lineOld初始化为null或空字符串。

答案 4 :(得分:0)

编译器给出了正确的错误,因为 在这条线上, if(line == lineOld){ 上面的for / while块可能没有执行,这意味着lineOld没有被初始化。

您可以通过将其初始化为某个虚拟变量“”或null来删除此错误。

答案 5 :(得分:0)

为什么使用while或for controle来初始化变量?你可以使用if:

 if(test == 0){
    lineOld = "";
    test++;
}

但我认为更好的方法是在null或“”处初始化lineOld,然后使用此测试:

 if(line.equals(lineOld))