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

时间:2015-02-15 18:47:18

标签: 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,右侧没有(右侧是打开的) (你应该能够亲眼看到)。

2 个答案:

答案 0 :(得分:2)

问题实际上是最后一个else语句。而不是打印出什么&#34;没有&#34;或""您需要打印一个空格" "。所以将else语句更改为:

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

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

答案 1 :(得分:0)

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

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