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

Java实现指定起始值拉丁方阵时移位错误如何修复

问题根源

  • 三层循环冗余:你当前使用了row/column/shift三层嵌套循环,实际上拉丁方阵仅需两层循环(外层控制行数,内层控制当前行的列元素),多余的循环层和错误的换行位置,是行数超出预期的核心原因
  • 数值未做取模校正:你计算latin的时候直接加偏移量,没有对阶数order取模,自然会出现超过最大值的情况

修改后完整代码

public static void main(String[] args){
    int first = 2; // 方阵起始数字
    int order = 4; // 方阵阶数/最大数值
    String space = " "; 

    // 外层循环:控制行数
    for (int row = 0; row < order; row++) {
        // 内层循环:控制当前行的每个元素
        for (int column = 0; column < order; column++) {
            // 计算当前位置的数值:(起始值偏移 + 行偏移 + 列偏移) 取模后转1-based
            int latin = ((first - 1 + row + column) % order) + 1;
            System.out.print(latin + space);
        }
        // 每行所有元素输出完再换行
        System.out.println();
    }
}

输出验证

运行后输出结果和你预期完全一致:

2 3 4 1 
3 4 1 2 
4 1 2 3 
1 2 3 4 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 23:06:04