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

Java实现Square3x3构造器 解决入参数组小于3x3时代码失效问题

问题排查与修复方案

存在的问题

  1. 默认值错误:Java中int类型数组初始化后,元素默认值为0,而非需求要求的-1,你目前的代码没有对未覆盖的位置主动赋值为-1,所以尺寸不足时会得到错误的0值。
  2. 冗余变量:代码中定义的count变量和循环变量i完全同步,没有实际作用,属于冗余代码。

修正后代码

public class Square3x3 {
        
    private int[][] square3x3; // 小驼峰命名更符合Java规范,也避免和类名冲突
    
    public Square3x3(int[][] array) {
        square3x3 = new int[3][3];
        // 先把所有位置初始化为-1,后续只要覆盖存在的元素即可
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 3; j++) {
                square3x3[i][j] = -1;
            }
        }
        // 复制传入数组存在的元素
        for (int i = 0; i < 3 && i < array.length; i++) {
            for (int j = 0; j < 3 && j < array[i].length; j++) {
                square3x3[i][j] = array[i][j];
            }
        }
    }
    
    // 按需添加getter方法访问私有数组
    public int[][] getSquare3x3() {
        // 返回副本避免外部修改内部状态,为可选优化项
        int[][] copy = new int[3][3];
        for (int i = 0; i < 3; i++) {
            System.arraycopy(square3x3[i], 0, copy[i], 0, 3);
        }
        return copy;
    }
}

实现说明

  • 初始化阶段先将整个3x3数组填充为-1,避免后续判断缺项再赋值的复杂逻辑,同时完全符合“不存在对应位置的单元格才赋值为-1”的要求
  • 复制阶段通过两层循环的边界判断i < 3 && i < array.length和j < 3 && j < array[i].length,天然支持传入数组尺寸大于3x3、行数不足、单行列数不足、非对称数组等所有边界场景
  • 调整了成员变量的命名为小驼峰格式,避免和类名重名,符合Java编码规范,你如果需要保留原有命名可以自行修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:24:07