Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android中使用if/else之间的变量_Java_Android - Fatal编程技术网

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

Java 在Android中使用if/else之间的变量,java,android,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&

我正在学习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编程错误,但我找不到解决方案。

您必须在开始时(或在封闭范围内的其他地方)声明一次:

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);
};

您只需在开头(或封闭范围内的其他地方)声明一次:

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);
};

AE、TAT、TAF的范围仅在if/else语句块内
,在外部
不可见

最好将其声明为存在这些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{


                }



              }


         }

AE、TAT、TAF的范围仅在if/else语句块内
,在外部
不可见

最好将其声明为存在这些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{


                }



              }


         }

阅读一下,它应该会有帮助:如果你在{}这样的括号内声明了一个变量,它只在这些括号内可见。谢谢大家的回答-感谢kcoppock提供的链接阅读一下,它应该会有所帮助:如果您在{}这样的括号内声明了一个变量,那么它只在这些括号内可见。谢谢大家的回答-谢谢kcoppock的链接谢谢Darshan,如果我这样做,我有一个错误“duplicated variable AE”不是真的。复制粘贴代码,你会发现你没有得到它。Darshan和lxx你是对的,很抱歉,我知道我是通过“double var=where”而不是“var=where”声明的,这就是重点吗?那么,在这种情况下,我会得到什么样的变量?非常感谢您的回答!变量在其作用域内有效(且必须唯一)。。。在if-else的情况下,您有两个作用域,如果您在每个作用域内声明变量,那么您有两个独立的变量,它们彼此不影响(独立的名称空间),您将不会得到“replice variable”错误。但是你不能访问范围外的变量。。。读一读,所有的事情都不能这么简单地解释……当你在赋值变量时,使用“var=whatever”。使用“double-var”可以声明变量。“double var=whatever”既是声明又是赋值。声明的变量在其作用域中必须是唯一的,因此只能在作用域中声明一次。但是你可以随意赋值(更改值)。谢谢Darshan,如果我这样做,我有一个错误“duplicated variable AE”不是真的。复制粘贴代码,你会发现你没有得到它。Darshan和lxx你是对的,很抱歉,我知道我是通过“double var=where”而不是“var=where”声明的,这就是重点吗?那么,在这种情况下,我会得到什么样的变量?非常感谢您的回答!变量在其作用域内有效(且必须唯一)。。。在if-else的情况下,您有两个作用域,如果您在每个作用域内声明变量,那么您有两个独立的变量,它们彼此不影响(独立的名称空间),您将不会得到“replice variable”错误。但是你不能访问范围外的变量。。。读一读,所有的事情都不能这么简单地解释……当你在赋值变量时,使用“var=whatever”。使用“double-var”可以声明变量。“double var=whatever”既是声明又是赋值。声明的变量在其作用域中必须是唯一的,因此只能在作用域中声明一次。但是你可以随意分配(改变值)。我没有真正理解你的观点库马尔第一个案例是我已经有的,第二个可能对我来说太高级了。那么,我可以为每一次计算做一次分类吗?我可以把变量值从语句中传递出去吗?不,不是这样的。我指的是范围。当你在类范围中声明变量时,你使它在类的每个方法中都可见。如果它在方法范围内,那么它在该方法内的每个try-catch、循环等中都是可见的,现在我想再包括一件事。关于内部类。当你声明一个局部类时,这意味着该方法内的一个类,那么如果这个类需要访问方法中的变量,那么就需要声明为final。如果你没有得到内部类的例子,就留下吧。但是我想你会对上面两个例子有一个清晰的认识。我没有真正理解你的观点,库马尔。第一个例子是我已经有过的,第二个可能对我来说太高级了。那么,我可以为每一次计算做一次分类吗?我可以把变量值从语句中传递出去吗?不,不是这样的。我指的是范围。当你在类范围中声明变量时,你使它在类的每个方法中都可见。如果它在方法范围内,那么它在该方法内的每个try-catch、循环等中都是可见的,现在我想再包括一件事。关于内部类。当你声明一个局部类时,这意味着该方法内的一个类,那么如果该类需要访问方法中的变量,则需要声明为final。如果没有得到内部类示例,请留下它。但是我认为您将清楚地看到上述两个示例