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 構造が 2 つあります。

次に、すべてが収集され、テキストに送信されます

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 に答える