我试图创建一个程序,询问用户方形/矩形的宽度和长度尺寸,然后使用#符号将其绘制出来。我几乎得到了它,除了我似乎无法将矩形的右侧打印出来...... 这是我的代码:
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,右侧没有(右侧是打开的) (你应该能够亲眼看到)。
答案 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