我有这段代码,我试图将以下形状打印出来......
****
* *
**
*
当前代码:
System.out.print("\nEnter number of rows: ");
rows = kybd.nextInt();
for (int i = 0; i < rows; i++) {
System.out.print("*");
}
for (int i = 0; i < rows; i++) {
for (int j = 1; j <= i; j++) {
if (j == 1 || j == rows - 1 || j == i) {
System.out.print("*");
} else {
System.out.print("0");
}
}
System.out.println();
}
由于某种原因,它打印出来像这样:
****
*
**
* *
任何想法如何反转第二个for循环,所以它以另一种方式打印?
答案 0 :(得分:3)
我觉得你应该改变你的i
循环
for (int i = rows - 1; i > 0 ; i--)
答案 1 :(得分:1)
试试这个:
Scanner kybd = new Scanner(System.in);
System.out.print("\nEnter number of rows: ");
int rows = kybd.nextInt();
if (rows > 1) {
for (int i = 0; i < rows; i++)
System.out.print("*");
System.out.println();
for (int i = rows - 1; i > 1; i--) {
System.out.print("*");
for (int j = 2; j < i; j++)
System.out.print(" ");
System.out.println("*");
}
}
System.out.println("*");
示例输出:
Enter number of rows: 6
******
* *
* *
* *
**
*
答案 2 :(得分:0)
请注意,您要在单独的周期中打印出第一行星号,而不是在主周期内。如果你想走这条路,你需要将第一个循环放在第二个循环之后。
for (int i = 0; i < rows; i++) {
for (int j = 1; j <= i; j++) {
if ((j == 1) || (j == (rows - 1)) || (j == i)) {
System.out.print("*");
} else {
System.out.print("0");
}
}
System.out.println();
}
for (int i = 0; i < rows; i++) {
System.out.print("*");
}