问题描述
我需要一个代码来帮助我使用整数输入来打印一个正方形的星星(在这种情况下,数字为5) 正方形的内部必须为空。
例如:
寻找此输出
* * * * *
* *
* *
* *
* * * * *
我会得到什么
* * * *
*
*
*
* * * *
我错过了正方形的右侧。
我的代码:
System.out.print("Please enter a number: ");
side = input.nextInt();
for (int i = 0; i < side - 1; i++) {
System.out.print("* ");
}
for (int i = 0; i < side; i++) {
System.out.println("*");
}
for (int i = 0; i < side; i++) {
System.out.print("* ");
}
}
输入
5
* * * *
*
*
*
* * * *
解决方法
您可以使用嵌套的for循环来完成此操作。
for (int i = 0; i < side; i++) {
for (int j = 0; j < side; j++) {
if (i == 0 || i == side - 1 || j == 0 || j == side - 1) {
System.out.print("* ");
} else {
System.out.print(" ");
}
}
System.out.println();
}
如果*
是第一行/列或最后一行/列,请打印;否则打印两个空格。
可以使用复杂度为O(n)的单个For循环完成
public static void main(String[] args) {
System.out.print("Please Enter a Number ");
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
if(number >= 3) {
String endPattern = new String(new char[number]).replace("\0"," *");
String midPattern = String.format("%-"+(number-2)*2+"s %s"," *"," *");
for(int i=1; i<= number; i++) {
if(i==1 || i==number) {
System.out.print(endPattern);
}
else {
System.out.print(midPattern);
}
System.out.println();
}
}
}
输出(用于输入3)
Please Enter a Number 3
* * *
* *
* * *
输出(用于输入7)
Please Enter a Number 7
* * * * * * *
* *
* *
* *
* *
* *
* * * * * * *
,
您需要在for循环的中间结尾处添加一个额外的星形。这可以通过嵌套一秒的for循环空间,然后打印星号来完成。
for (int i = 0; i < side; i++) {
System.out.print("*");
for (int j = 0; j < side; j++) {
System.out.print(" ");
}
System.out.println("*");
}