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