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

Java将数组按网格打印时输出与预期不符的问题排查

问题分析
  • 第一是二维数组赋值逻辑错误:嵌套循环中直接修改外层循环变量i,破坏了循环计数逻辑,且gridNum的取值索引计算完全错误,没有按照预期的列优先规则填充网格。
  • 第二是语法不完整:代码中多个循环、方法的闭合大括号缺失,无法正常编译运行。
  • 第三是输出对齐逻辑有瑕疵:字符串拼接搭配printf的使用方式不规范,空格计算错误会导致列对齐错位。
修复方案

核心逻辑调整

你需要的是列优先填充规则:先填完第一列的所有行,再填第二列的所有行,因此gridNum的索引应按照列号 * 总行数 + 行号的公式计算。

修复后完整代码

public void printCardAsGrid(String numbers) {
    String[] gridNumbers = numbers.split(" ");
    int[] gridNum = new int[gridNumbers.length];
    for (int x = 0; x < gridNumbers.length; x++) {
        gridNum[x] = Integer.parseInt(gridNumbers[x]);
    }

    int[][] cardGrid = new int[currentRowSize][currentColumnSize];
    for (int i = 0; i < currentRowSize; i++) {
        for (int j = 0; j < currentColumnSize; j++) {
            // 列优先索引计算:第j列第i行对应原数组的 j*总行数 +i 位置
            cardGrid[i][j] = gridNum[j * currentRowSize + i];
        }
    }

    // 优化打印对齐逻辑,直接用格式化输出更简洁
    for (int[] row : cardGrid) {
        for (int num : row) {
            System.out.printf("%2d ", num);
        }
        System.out.println();
    }
}

效果验证

输入1 16 13 18 14 23,且currentRowSize=3、currentColumnSize=2时,输出结果为:

1 18 
16 14 
13 23 

和预期效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:27:03