1

我正在开发一个小应用程序,同时学习 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 编程错误,但我找不到解决方案。

4

2 回答 2

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);
};
于 2012-06-16T22:46:07.190 回答
0

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

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

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{


                }



              }


         }
于 2012-06-17T03:36:11.460 回答