Java项目商店执行/buy Token提示正常但未新增tokens数量异常排查
问题排查结果
1. 执行/buy Token同时输出购买成功和余额不足的原因
你对/buy Token的判断用了两个独立的if语句,没有用else if关联:
- 当你的账户余额刚好≥1000时,第一个
if判断成立,执行扣费逻辑,余额会直接减少1000 - 扣费完成后程序会继续执行第二个独立的
if判断,此时余额已经<1000,第二个判断也成立,就会同时输出两条提示
修复方案:把第二个if改成else if,让两个判断互斥即可:
if (in.equals("/buy Token") && Bank.amount >= 1000) { System.out.println("You've successfully bought a Token!"); Bank.amount = Bank.amount - 1000; Tokens.amount = Tokens.amount + 1; } // 改成else if,前面条件满足就不会走这个分支 else if (in.equals("/buy Token") && Bank.amount < 1000) { System.out.println("You don't have enough coins to buy a Token!"); }
2. 执行/tokens查询无响应的原因
你调用了Tokens.getAmount()方法,但这个方法只是返回了代币数量,你没有把返回值打印到控制台,自然不会有任何输出。
修复方案:修改/tokens的逻辑,增加打印语句:
if (in.equals("/tokens")) { System.out.println("当前代币数量:" + Tokens.getAmount()); }
3. 其他潜在bug提醒
- Tokens类里的
add、del是实例方法,但amount和getAmount()是静态属性/方法,逻辑不统一,后续如果调用实例方法修改代币会有逻辑隐患,建议把add、del也改成静态方法,或者统一改成实例成员 - 购买BetterFarm、ShorterDelay的逻辑有问题:你设置
BetterFarm = true之后没有重置,后续不管用户输入任何指令,都会进入while (BetterFarm)的逻辑,重复触发购买/余额不足提示 - 输入
/shop时会直接new Shop(),会递归创建Shop实例,导致重复弹出商店界面,长时间运行会触发内存溢出
内容的提问来源于stack exchange,提问作者Sdev
相关产品推荐
相关产品推荐

