Java 在Android中使用if/else之间的变量
我正在学习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&
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。如果没有得到内部类示例,请留下它。但是我认为您将清楚地看到上述两个示例