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

如何修改Java代码实现指定的空心数字方阵图案?

空心数字方阵代码修正方案

问题描述

需要实现特定样式的空心数字方阵,现有Java代码输出不符合预期,需调整代码达成目标效果。

当前代码

import java.util.*;

public class Exercise2 {
    public static void main (String args[]) {
        Scanner scanner = new Scanner (System.in);
        boolean check = false;
        
        while (check != true){
            System.out.println("Enter an integer between 1 and 20: ");
            int num = scanner.nextInt();
            if (num > 0 && num <= 20){
                for (int i=1; i<=num; i++){
                    for (int j=1; j<=num; j++){
                        if (i == 1 || i == num || j == 1 || j == num) { 
                              System.out.print(j + " ");
                        } else {
                            System.out.print("  "); // Two spaces for inner area
                        }
                    }
                    System.out.println();
                }
                check = false;
            }
            else {
                System.out.println("Number not between 1 and 20. Exiting.");
                check = true;
            }
        }
    }
}

当前输出

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

期望输出

Enter an integer between 1 and 20: 5
output:
1 2 3 4 5
2       4
3       3
4       2
5 4 3 2 1

代码修正方案

当前代码的核心问题是边界数字的输出逻辑不符合预期,需针对不同边界位置调整输出内容:

  • 第一行:保持从1到num递增输出,原逻辑正确;
  • 最后一行:需要从num到1递减输出,原逻辑错误;
  • 第一列:输出当前行号i,原逻辑固定输出1,错误;
  • 最后一列:输出num - i + 1,原逻辑固定输出num,错误;
  • 内部区域:保持输出两个空格,逻辑正确。

修改后的代码如下:

import java.util.*;

public class Exercise2 {
    public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        boolean check = false;
        
        while (!check) {
            System.out.println("Enter an integer between 1 and 20: ");
            int num = scanner.nextInt();
            if (num > 0 && num <= 20) {
                for (int i = 1; i <= num; i++) {
                    for (int j = 1; j <= num; j++) {
                        if (i == 1) {
                            // 第一行:从1到num递增
                            System.out.print(j + " ");
                        } else if (i == num) {
                            // 最后一行:从num到1递减
                            System.out.print((num - j + 1) + " ");
                        } else if (j == 1) {
                            // 第一列:输出当前行号
                            System.out.print(i + " ");
                        } else if (j == num) {
                            // 最后一列:输出对称位置数字
                            System.out.print((num - i + 1) + " ");
                        } else {
                            // 内部区域:填充空格
                            System.out.print("  ");
                        }
                    }
                    System.out.println();
                }
                check = false;
            } else {
                System.out.println("Number not between 1 and 20. Exiting.");
                check = true;
            }
        }
    }
}

修正后输出示例(输入5时)

Enter an integer between 1 and 20: 5
1 2 3 4 5 
2       4 
3       3 
4       2 
5 4 3 2 1 

内容的提问来源于stack exchange,提问作者FL C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:12:24