在Android中使用if / else之间的变量

时间:2012-06-16 22:42:06

标签: java android

我正在学习Android时开发一个小应用程序。

该应用程序基本上是进行一系列简单的数学计算。按钮正在调用进行计算的函数。一切都运行正常,直到我插入了一个if / else构造。

在这个构造中,我使用之前创建的变量,使用此

进行计算和设置其他变量
if (TS>Ex) {
    Double AE = 0.00;
} else {
    Double AE = (Ex-TS);
};

Double TBTAT = (TS-Ex);
Double Exx = 2864.17;   
if (TBTAT>Exx) {
    Double TAT = (Exx*0.2);
} else {
    Double TAT = (TBTAT*0.2);
};

我有两个这样的if / else结构。

然后收集所有内容并发送到文本

IT_ResultTXT.setText(Double.toString(AE+TAT+TAF));

在正常情况下,AE,TAT,TAF在代码的最后一行中变成“无法解析为变量”,但如果我在函数的开头声明它们,则会出现重复变量的错误

我认为这是一个非常愚蠢的基本Java编程错误,但我无法找到解决方案。

2 个答案:

答案 0 :(得分:8)

您必须在开头(或封闭范围内的其他位置)声明,只需一次:

Double AE;

if (TS > Ex) {
    AE = 0.00;
} else {
    AE = (Ex - TS);
};

Double TBTAT = (TS - Ex);
Double Exx = 2864.17;    

Double TAT;

if (TBTAT > Exx) {
    TAT = (Exx * 0.2);
} else {
    TAT = (TBTAT * 0.2);
};

答案 1 :(得分:0)

AE,TAT,TAF的范围为only within the if/else statement block,且为not visible outside

最好将它声明为存在这些if / else语句的方法的局部变量或作为类intance变量

As local varibles:

    public void go() {

    Double AE = 0.00;
    Double TBTAT = (TS-Ex);
    Double Exx = 2864.17;  

    if(condition){


      }

   else{



      }

}


   As Class scope:

             public class A {

               Double AE = 0.00;
               Double TBTAT = (TS-Ex);
               Double Exx = 2864.17; 


            public void go(){


                if (condition){



              }
                else{


                }



              }


         }