我使用变量line
,该方法变为lineOld
后。因此,第一次运行方法lineOld
未定义。
因此,在编译时,我可能没有初始化错误变量lineOld
。
我曾尝试仅为lineOld
提供一次价值(请先查看for
和while
),但不要去。
任何帮助:)?
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;
答案 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))