Java高低猜数游戏中if-else if分支无法触发的问题排查
问题分析与修复
你的代码核心问题是高低判断逻辑完全搞反了,导致猜对的情况反而触发输的提示:
- 当
number > result时,意味着新数字result比初始数字number小,用户猜"l"(低)才是正确的,但你写的是猜"h"(高)才算赢。 - 当
number < result时,新数字result比初始数字number大,用户猜"h"(高)才对,你却写成猜"l"(低)赢。
另外最后一个else if (number == result)可以简化成else,因为前面已经排除了大于和小于的情况,剩下的必然是相等。
修正后的代码如下:
if (number > result) { // 新数字更小,猜"l"赢 if (guess.equalsIgnoreCase("l")) { System.out.println("You win!"); money += wage + 3; return money; } } else if (number < result) { // 新数字更大,猜"h"赢 if (guess.equalsIgnoreCase("h")) { System.out.println("You win!"); money += wage + 3; return money; } } else { // 数字相等,猜"e"中大奖 if (guess.equalsIgnoreCase("e")) { System.out.println("JACKPOT!!"); money = wage * 2; return money; } } System.out.println("Oops, you lost."); // 修正原代码拼写错误:your → you return money;
内容的提问来源于stack exchange,提问作者JulianDoes
相关产品推荐
相关产品推荐

