在一个if子句中实例化变量,并在另一个if子句

时间:2016-09-16 09:26:22

标签: java syntax ide

我有以下代码示例:

 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中。有解决方法吗?

5 个答案:

答案 0 :(得分:2)

现在,您的testVariable范围为if,但在其他任何地方都无法看到。您需要在if:

之前执行此操作

int testVariable = 0

然后在你的if中你需要删除int,因为变量已经被声明了。

Read about variable scopes here

答案 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;
 }