
本文讲解如何使用java根据用户输入的宽高、边框字符和内部填充字符,动态绘制一个空心矩形框——仅外圈为边框字符,内部区域统一使用指定填充字符。
要实现一个“空心矩形框”(即仅有边框、内部由另一字符填充),关键在于按行列位置判断每个字符应打印什么:
- 首行(j == 0)和末行(j == height − 1):整行都打印 border;
- 中间行(1 ≤ j ≤ height−2):仅首列(i == 1)和末列(i == width)打印 border,其余位置打印 interior。
注意:原代码中内层循环 for (int i = 1; i
- 将循环范围改为 i = 1 到 i
- 使用嵌套条件判断当前坐标 (j, i) 是否位于边界上。
以下是完整可运行的修正版代码:
import java.util.Scanner;
public class Box {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
int width;
int height;
char border;
char interior;
System.out.print("Enter width : ");
width = scnr.nextInt();
System.out.print("Enter height : ");
height = scnr.nextInt();
System.out.print("Enter border : ");
border = scnr.next().charAt(0);
System.out.print("Enter interior : ");
interior = scnr.next().charAt(0);
// 绘制矩形框
for (int j = 0; j < height; j++) {
for (int i = 1; i <= width; i++) {
if (j == 0 || j == height - 1) {
// 首行或末行:全部为边框
System.out.print(border);
} else {
// 中间行:首列/末列为边框,其余为填充
if (i == 1 || i == width) {
System.out.print(border);
} else {
System.out.print(interior);
}
}
}
System.out.println(); // 换行
}
scnr.close();
}
}✅ 运行示例(输入 width=7, height=5, border='X', interior='O'):
立即学习“Java免费学习笔记(深入)”;
XXXXXXX XOOOOOX XOOOOOX XOOOOOX XXXXXXX
⚠️ 注意事项:
- 若 height = 2"); return; });
- 使用 scnr.next().charAt(0) 安全读取单字符,避免 nextLine() 的换行符残留问题;
- 最终记得调用 scnr.close() 释放资源(尤其在教学环境中养成良好习惯)。
该方案逻辑清晰、易于理解与调试,是初学者掌握二维循环与条件控制的理想范例。









