Java基础银行账户跟踪应用switch分支异常触发问题求助
问题根因
核心问题是switch分支的匹配类型不匹配:
你通过scan.nextInt()读取到的choice是int整数类型,但代码中所有case后的匹配值都用单引号包裹,比如case '1':,单引号包裹的是char字符类型,字符'1'对应的ASCII码值为49,和用户输入的整数1数值完全不等,因此永远无法匹配到对应case,直接触发default分支。
同时代码还存在两处需要修正的问题:
- 构造函数未赋值成员变量:
Account(String Name,String ID)构造函数为空,没有将传入的参数赋值给类的成员变量,后续打印用户名、账户ID时会输出null。 - 存在拼写错误:菜单中
Make a withrawl、提示语Enter an amount to withdrawl拼写有误,正确拼写为withdrawal。
修复方案
- 移除所有case后数值的单引号,改为整数匹配:
switch(choice) { case 1: System.out.println("Balance = $" + Balance); System.out.println(); break; case 2: System.out.println("Enter an amount to deposit."); int amount = scan.nextInt(); deposit (amount); System.out.println(); break; case 3: System.out.println("Enter an amount to withdraw."); int amount2 = scan.nextInt(); withdraw(amount2); break; case 4: getPrevioustransaction(); break; case 0: break; default: System.out.println("Error -- Please choose a valid option."); }
- 补充构造函数的赋值逻辑:
Account(String Name,String ID){ this.Name = Name; this.ID = ID; }
- 修正菜单和提示语中的拼写错误即可。
内容的提问来源于stack exchange,提问作者user419524
相关产品推荐
相关产品推荐

