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

使用嵌套for循环创建空心图形(Java):如何修改程序以支持任意合法输入

解决空心图形打印的输入限制问题

你的代码目前只能支持输入≤6的情况,核心原因是硬编码了所有边界行和列的判断条件——你把每个空心框的边界位置都直接写在了if语句里,当输入超过6时,没有对应的判断逻辑,自然无法正确打印更多的空心图形。

要支持任意≥1的合法输入,我们需要找到这些边界位置的数学规律,用动态计算代替硬编码的条件。

修改后的代码

package tester;
import java.util.Scanner;
public class Tester {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int ui, sideL;
        System.out.println("(Note: The number should be greater than or equal to 1: ");
        System.out.println("Enter a number: ");
        ui = input.nextInt();
        
        // 先处理非法输入
        if (ui < 1) {
            System.out.println("Invalid input!");
            input.close();
            return;
        }
        
        sideL = (ui * (ui - 1)) + 1;
        
        for (int a = 1; a <= sideL; a++) {
            for (int b = 1; b <= sideL; b++) {
                boolean printStar = false;
                if (ui == 1) {
                    // 输入1时,只需要打印一个*
                    printStar = true;
                } else {
                    int interval = ui - 1;
                    // 判断当前行或列是否属于空心框的边界
                    // 边界位置满足:(位置-1) 能被间隔值整除
                    if ((a - 1) % interval == 0 || (b - 1) % interval == 0) {
                        printStar = true;
                    }
                }
                System.out.print(printStar ? "* " : "  ");
            }
            System.out.println();
        }
        input.close();
    }
}

修改思路说明

  1. 移除硬编码条件:原来的if语句里罗列了所有边界位置(比如a == ui、a == ui + (ui - 1)等),这是不可扩展的。我们通过数学规律来判断边界:
    • 对于输入ui,空心框之间的间隔是ui - 1
    • 所有边界行/列的位置满足:(位置值 - 1) % (ui - 1) == 0,比如输入3时,间隔是2,边界位置就是1、3、5、7((1-1)%2=0,(3-1)%2=0,以此类推)
  2. 单独处理输入1的情况:当ui=1时,间隔为0,取模运算会报错,所以直接判断打印单个*
  3. 优化输入校验:把非法输入的判断提前,逻辑更清晰,同时关闭Scanner避免资源泄漏

这样修改后,无论输入多大的合法值(≥1),程序都能根据规律动态计算边界位置,正确打印对应的空心图形。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:47:47