You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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。
修复方案
  1. 移除所有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.");
}
  1. 补充构造函数的赋值逻辑:
Account(String Name,String ID){
    this.Name = Name;
    this.ID = ID;
}
  1. 修正菜单和提示语中的拼写错误即可。

内容的提问来源于stack exchange,提问作者user419524

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:45:08