【发布时间】:2019-12-18 00:00:00
【问题描述】:
我需要帮助来弄清楚如何修复我的代码。我试图允许使用菜单在银行存款和取款。发生的情况是,当我通过存款或取款选项时,这些值不会被存储,只是在循环再次开始时重置。我希望能够添加余额或成为外卖余额(有点像实际的银行)。在这段代码中,我使用了 2 个类(Minibank 和 Function)。有谁知道我能做些什么来解决这个问题? (抱歉代码乱码)
import java.util.*; //import everything
import java.lang.*;
public class MiniBank extends Function {
public static void main(String[] args) {
Scanner ask = new Scanner(System.in);
int menu = 3;
do{
System.out.println("1:Deposit");
System.out.println("2:Withdraw");
System.out.println("3:Check Balance");
System.out.println("4:Exit");
switch (menu){
case 1:
Function Deposit = new Function() {};;
Deposit.Deposit(ask);
break;
case 2:
Function Withdraw = new Function() {};;
Withdraw.Withdraw(ask);
break;
case 3:
Function Howmuch = new Function() {};;
Howmuch.Money();
break;
case 4:
System.out.println("Goodbye");
System.exit(0);
}
System.out.println("Select Following Options");
menu=ask.nextInt(); //menu option
}while (menu!=4);
}
}
import java.util.*;
abstract public class Function{
protected double Balance;
public Function(){
//going to add something later
}
public void Deposit(Scanner ask){
System.out.println("Insert the amount put in");
double task = ask.nextDouble();
Balance = Balance + task;
System.out.println("Account balance: "+ Balance);
}
public void Withdraw(Scanner ask){
System.out.println("Insert the amount to take out");
double task = ask.nextDouble();
Balance = Balance - task;
System.out.println("Account balance: "+ Balance);
}
public void Money(){
System.out.println(Balance);
}
}
【问题讨论】:
-
new Function() {};;正在创建 new 实例(通过匿名子类)。你为什么这样做? -
我这样做是为了调用函数。
-
"Nothing" 代码有问题,它正在做它应该做的事情。问题在逻辑之内。正如@ElliottFrisch 提到的,您正在做的是创建该类的新实例,从而重置值。在循环外实例化
Function类 -
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已根据 CC BY-SA license 授予 SE 分发内容的不可撤销权利(即无论您未来的选择如何)。根据 SE 政策,分发非破坏版本。因此,任何破坏行为都将被撤销。请参阅:How does deleting work? …。如果允许删除,则帖子下方左侧有一个“删除”按钮,但仅在浏览器中,而不是移动应用程序中。
标签: java constructor switch-statement java.util.scanner abstract