从Java中的用户输入绘制空心星号正方形/矩形

我正在尝试创建一个程序,询问用户方形/矩形的宽度和长度尺寸,然后使用#符号将其绘制出来。 我几乎得到了它,除了我似乎无法让矩形的右侧打印正确…这是我的代码:

import java.util.Scanner; public class warmup3 { public static void main(String[] args) { int width; int length; Scanner sc= new Scanner(System.in); System.out.println("How big should the width of the square be?"); width = sc.nextInt(); System.out.println("How big should the length of the square be?"); length= sc.nextInt(); { for (int y= 0; y < length; y++) { for (int x= 0; x < width; x++) { if (x == 0 || y == 0) { System.out.print("#"); } else if (x != width && y == length-1) { System.out.print("#"); } else if (y != length && x == width-1) { System.out.print("#"); } else { System.out.print(""); } } System.out.println(""); } } } } 

我知道问题出在第二个else-if语句但是我无法解决它…

我无法上传此代码打印出来的图片,但基本上它是一个几乎完整的矩形,但在左侧有两行#s,没有包围右侧(右侧是打开的)(你应该可以看到)为自己)。

问题实际上是最后一个else语句。 而不是打印出“没有”或""你需要打印出一个空间" " 。 所以将else语句更改为:

  else { System.out.print(" "); } 

这样当循环当前不在任何边缘时,它将打印出一个空格,允许最后一个else if在打印出最后一个时位于正确的位置#

使用逻辑检查迭代为二维数组:

 public static void rectOuter(int length, int width) { String printStr = "*"; String seprator = " "; for (int i = 0; i < length; i++) { for (int j = 0; j < width; j++) if (i == 0 || j == 0 || i == length - 1 || j == width - 1) System.out.print(printStr + seprator); else System.out.print(seprator + seprator); System.out.println(); } } 

PS:要用StringBuilder替换的System.out.print