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

如何基于线性数据生成指定格式的5x5二维数组?Java代码修改

问题

我需要创建一个5x5的数值网格,当前Java代码如下:

public class a {public static void main(String[] args){int[][] arr ={ { 9, 15, 4, 10, 7, 26, 30, 18, 24, 21, 32, 39, 42, 37, 58, 21, 49, 56, 50, 74, 65, 75, 71, 72 },{ 12, 3, 7, 6, 11, 28, 24, 25, 22, 19, 31, 35, 45, 37, 52, 57, 56, 57, 53, 62, 66, 67, 72, 75 },{ 4, 8, 5, 2, 13, 25, 27, 22, 26, 18, 36, 33, 34, 44, 50, 59, 48, 58, 46, 74, 71, 73, 70, 66 },{ 11, 3, 7, 6, 12, 28, 24, 25, 22, 19, 31, 35, 45, 37, 52, 57, 56, 50, 53, 62, 66, 67, 72, 75 },{ 9, 15, 4, 10, 7, 26, 30, 18, 24, 21, 32, 39, 42, 37, 58, 51, 49, 56, 50, 74, 65, 75, 71, 72 },{ 10, 5, 12, 7, 2, 26, 24, 18, 29, 21, 33, 40, 43, 32, 49, 60, 57, 46, 56, 64, 67, 72, 62, 65 },{ 7, 8, 6, 14, 9, 27, 16, 23, 25, 21, 44, 37, 45, 34, 53, 52, 60, 56, 48, 73, 66, 65, 74, 62 },{ 4, 2, 13, 15, 6, 19, 24, 22, 26, 18, 33, 43, 34, 32, 55, 50, 58, 59, 46, 70, 73, 68, 64, 71 },{ 5, 13, 7, 12, 10, 29, 19, 23, 26, 30, 41, 36, 40, 35, 51, 54, 56, 48, 53, 71, 61, 66, 69, 74 },{ 5, 11, 9, 1, 2, 25, 16, 28, 20, 19, 39, 40, 44, 42, 55, 58, 54, 53, 60, 72, 67, 70, 61, 71 },{ 6, 7, 11, 3, 4, 17, 18, 25, 24, 20, 38, 42, 33, 41, 48, 54, 52, 57, 46, 66, 63, 69, 64, 61 } };;for (int i = 0; i < 1; i++)for (int j = 0; j < 5; j++)System.out.println(arr[i][j] );}}

当前输出为:

9
15
4
10
7

希望修改代码后输出如下格式的5x5网格:

9   26  32  58  74
15  30  39  21  65
4   18  FR  49  75
10  24  42  56  71
7   21  37  50  72

要求在前12个数字之后显示“FR”,然后展示剩余的12个数字。请问该如何修改代码?

解决方案

修改后的代码

public class GridPrinter {
    public static void main(String[] args) {
        int[][] arr = {
            {9, 15, 4, 10, 7, 26, 30, 18, 24, 21, 32, 39, 42, 37, 58, 21, 49, 56, 50, 74, 65, 75, 71, 72},
            // 其他行数组内容保持原代码不变,此处省略以简化展示
        };
        
        // 提取第一行数据用于生成5x5网格
        int[] targetRow = arr[0];
        int gridSize = 5;

        for (int i = 0; i < gridSize; i++) {
            for (int j = 0; j < gridSize; j++) {
                // 计算网格位置对应的原数组索引(按列取数生成行)
                int dataIndex = i + j * gridSize;
                
                if (dataIndex == 12) {
                    // 第13个位置(从0计数)输出FR
                    System.out.printf("%-4s", "FR");
                } else if (dataIndex < 12) {
                    // 前12个数字直接输出
                    System.out.printf("%-4d", targetRow[dataIndex]);
                } else {
                    // 跳过FR位置,原数组索引+1
                    System.out.printf("%-4d", targetRow[dataIndex + 1]);
                }
            }
            // 每行结束后换行
            System.out.println();
        }
    }
}

关键修改说明

  • 数据映射逻辑:5x5网格的每个位置(i,j)对应原数组的索引为i + j*5,按列取数生成目标网格的行,匹配期望的排列顺序。
  • FR替换处理:当计算出的索引等于12时(对应第13个元素,从0开始计数),输出“FR”;原数组中12之后的元素需要将索引加1,跳过被FR替换的位置。
  • 格式化输出:使用printf("%-4s", ...)和printf("%-4d", ...)让每个元素占4个字符宽度,实现网格的对齐效果。
  • 代码可读性优化:修改类名为有意义的GridPrinter,拆分数组定义并添加注释,提升代码可维护性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:45:36