我有以下代码示例:
boolean test=(0.5>Math.random());
if (!test) {
int testVariable=5;
}
if (test){
//do this
} else {
testVariable+=5;
}
我得到" testVariable无法解析为变量"错误,即使没有初始化testVariable,也不会执行第二个if的else分支。这发生在Eclipse和NetBeans IDE中。有解决方法吗?
答案 0 :(得分:2)
现在,您的testVariable
范围为if
,但在其他任何地方都无法看到。您需要在if:
int testVariable = 0
然后在你的if
中你需要删除int
,因为变量已经被声明了。
答案 1 :(得分:2)
在if循环之外声明它。它的范围仅限于if,这就是为什么它在if之外不可见。
答案 2 :(得分:2)
您在testVariable
内声明了if
这个变量,这就是testVariable
变量仅在if block
中可用的原因,您可以在if
一侧使用它}。
如果想要访问if,那么在if之外声明这个变量。
例如:
int testVariable = 0;
boolean test=(0.5>Math.random());
if (!test) {
testVariable=5;
}
if (test){
//do this
} else {
testVariable+=5;
}
答案 3 :(得分:2)
在您的代码中: -
boolean test=(0.5>Math.random());
if (!test) { // 1st if
int testVariable=5;
}
if (test){ // 2nd if
//do this
} else {
testVariable+=5;
}
如果是大小写,你已经在里面声明了变量。现在,根据java作用域,该变量的范围仅在结束花括号内。因此,一旦执行程序超出了结束大括号,该变量就超出了范围,不再可以使用了。
如果你想在以后的情况下使用它,你应该在第一个之外声明变量。如: -
int testVariable = 0;
boolean test=(0.5>Math.random());
if (!test) {
testVariable=5;
}
if (test){
//do this
} else {
testVariable+=5;
}
答案 4 :(得分:1)
您的代码应修改为,
boolean test=(0.5>Math.random());
int testVariable=0;
if (!test) {
testVariable=5;
}
if (test){
//do this
}
else {
testVariable+=5;
}