我正在尝试打印此模式,但我无法在最后一行获得打印*
*
* *
* *
* *
* * * * *
但我最终得到了这个,最后一行是问题
*
* *
* *
* *
* *
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= m - i; j++) {
System.out.print(" ");
}
for (int k = 1; k < i; k++) {
if (k == 1 || k == i - 1)
System.out.print("*");
System.out.print(" ");
}
System.out.println(" ");
}
答案 0 :(得分:1)
你几乎在那里。如果*
处理最后一行,您只需要包含条件即可写k
,换句话说i == m
所以
if (k == 1 || k == i - 1)
看起来应该更像
if (k == 1 || k == i - 1 || i == m)
另一件事是,您需要保证无论您是否打印*
,都必须在行中添加两个字符,即"* "
或" "
。目前,您只打印"*"
或" "
,这不是您想要的。改变
if (k == 1 || k == i - 1 || i == m)
System.out.print("*");
System.out.print(" ");
到
if (k == 1 || k == i - 1 || i == m)
System.out.print("*");
else
System.out.print(" ");
System.out.print(" ");
或者更简单
if (k == 1 || k == i - 1 || i == m)
System.out.print("* ");
else
System.out.print(" ");
答案 1 :(得分:0)
import java.util.*;
import java.awt.*;
class Spiral
{
public static void main(String[] args)
{
int m=12;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= m - i; j++)
{
System.out.print(" ");
}
for (int k = 1; k < i; k++) {
if (k == 1 || k == i-1 )
System.out.print("*");
System.out.print(" ");
if(i==m)
{
for(int n=2;n<12;n++)
{
System.out.print("*");
System.out.print(" ");
break;
}
}
System.out.println(" ");
}
}
}