我正在创建一个银行帐户计划来学习OOP。我做了一个名为w_or_d
的空洞方法(代表撤回或存款),但在我的虚空中制造的变量并没有延伸到虚空之外。
它将我的变量(finalbalance
)显示为0
。
public class users {
int balance;
int finalbalance;
public void w_or_d(int word, int amount) {
if (word ==0) {
int finalbalance = balance-amount;
}
else if (word == 1) {
int finalbalance = balance+amount;
}
}
System.out.println(finalbalance);
}
答案 0 :(得分:5)
您正在使用重复方法局部变量定义来遮蔽实例变量:
int finalbalance = balance-amount;
只做分配而不是重新解密
finalbalance = balance-amount;
同样使用关键字this
将确保您设置实例变量而不是局部变量,以防您有两个具有相同名称的变量。所以这更安全:
this.finalbalance = balance-amount;
答案 1 :(得分:2)
int finalbalance = balance+amount;
int finalbalance = balance+amount;
这些句子覆盖了
int finalbalance;
所以当你
System.out.println(finalbalance);
finalbalance没有正确的值。
只需删除“int”
int finalbalance =余额+金额;
int finalbalance =余额+金额;
答案 2 :(得分:1)
您已将finalbalance
声明为类属性和您的(命名不佳)方法w_or_d()
中的局部变量。
你正在改变当地人;当局部变量超出范围时忽略的更改。
答案 3 :(得分:0)
或者可以在else if
语句之后用作休闲
this.finalbalance =finalbalance;
所以它将finalbalance分配回类变量。