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

如何重写冗余Java纸牌游戏程序 修复嵌套for循环逻辑错误

问题原因
  • 循环逻辑错误:内层k循环会对同一个card[0][i]位置重复赋值8次,最终仅保留最后一次赋值的S9
  • 语法错误:
    • short是Java关键字,不能用作方法名称
    • 字符串常量SA未加双引号
    • 方法定义写在了main函数内部,不符合Java语法规范
    • 方法形参类型错误,传入的是二维字符串数组,形参却定义为一维int数组
    • 非静态全局变量ans无法在静态方法中直接调用
正确简化实现

直接预定义花色、牌面值序列,通过双层循环一一对应赋值即可,无需手动逐一写赋值语句,打印逻辑也可通过循环简化,完整可运行代码如下:

public class CardGameArray {
    public static void main(String[] args) {
        String[][] card = new String[4][13];
        // 预定义花色标识、牌面值、花色打印名称
        char[] suitMark = {'S', 'H', 'D', 'C'};
        String[] rankValue = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K"};
        String[] suitName = {"Spades", "Hearts", "Diamonds", "Clubs"};

        // 初始化所有牌面
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 13; j++) {
                card[i][j] = suitMark[i] + rankValue[j];
            }
        }

        // 打印输出
        for (int i = 0; i < 4; i++) {
            System.out.println(suitName[i]);
            for (int j = 0; j < 13; j++) {
                System.out.print(card[i][j] + "\t");
            }
            System.out.println();
        }
    }
}

上述代码运行输出与原手动赋值版本完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 22:15:04