Blackjack游戏重玩逻辑优化:限制仅Y/N为合法输入
优化Blackjack游戏重玩询问模块
问题修正与代码优化
针对你提出的输入合法性校验需求,先整理现有代码的核心问题:非静态成员无法在静态main方法中直接调用、缺少输入合法性校验逻辑、退出感谢语未正确触发。以下是优化后的完整代码:
import java.util.Scanner; public class Play { // 类名遵循Java大驼峰命名规范 public static void main(String[] args) { Scanner inputScanner = new Scanner(System.in); String userInput = ""; boolean playAgain; do { // 此处替换为你的Blackjack游戏核心逻辑 System.out.println("=== 正在进行Blackjack游戏 ==="); // 重玩询问+合法性校验循环 do { System.out.print("是否要继续游戏?([Y] / [N]) "); userInput = inputScanner.nextLine().trim(); // 去除输入前后空白字符 // 判断输入是否合法 if (!userInput.equalsIgnoreCase("Y") && !userInput.equalsIgnoreCase("N")) { System.out.println("请输入Y或N!"); } } while (!userInput.equalsIgnoreCase("Y") && !userInput.equalsIgnoreCase("N")); // 确定是否继续游戏 playAgain = userInput.equalsIgnoreCase("Y"); if (!playAgain) { System.out.println("感谢游玩!"); } } while (playAgain); inputScanner.close(); // 关闭输入流资源 } }
关键改动说明
- 修正命名规范:将类名
play改为Play,符合Java代码规范 - 调整变量作用域:把输入相关变量移至
main方法内,解决静态方法访问非静态成员的错误 - 新增合法性校验:通过嵌套
do-while循环,强制用户输入合法的Y/N(支持大小写输入,比如y、n也能识别) - 处理空白输入:用
trim()去除输入前后的空格,避免用户误输入空格导致的判断异常 - 完善退出逻辑:输入N时自动显示感谢语并终止游戏循环
- 规范资源管理:使用后关闭
Scanner,避免资源泄漏
内容的提问来源于stack exchange,提问作者Nicole
相关产品推荐
相关产品推荐

