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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:05:17