我正在尝试打印星形图案
*
***
*****
***
*
我使用以下逻辑打印:
*
***
*****
上半年代码:
int i, j;
for (i = 1; i <= 3; i++) {
for (j = 1; j <= i; j++)
System.out.print("*");
for (j = i - 1; j >= 1; j--)
System.out.print("*");
System.out.println();
}
但我仍然不确定如何打印整个结构。
答案 0 :(得分:1)
你只需要反向写入循环,从upperBound开始 - 1.参见下面的代码:
int numberOfLines = 3;
for (int i = 1; i <= numberOfLines; i++) {
for (int j = 1; j < 2*i; j++){
System.out.print("*");
}
System.out.println();
}
for (int i = numberOfLines - 1; i > 0; i--) {
for (int j = 1; j < 2*i; j++){
System.out.print("*");
}
System.out.println();
}
答案 1 :(得分:1)
尽可能采用简单的步骤也许是有意义的。
首先,你需要五行,所以
for (i = 1; i <= 5; i++) {
接下来,在i
行,确定您要放置的星号数。它在第3行是五个星号,每行在该行的上方或下方两个星号。
int len = 5 - Math.abs (i - 3) * 2;
然后,将它们放在一个循环中:
for (j = 1; j <= len; j++)
System.out.print("*");
并添加换行符:
System.out.println();
}
答案 2 :(得分:0)
该模式由N * 2 - 1rows
组成。对于每一行,列按升序排列,直到Nth row
。 Nth row columns
按降序打印后。
分步描述性逻辑可打印半菱形星形图案。
N
中。columns = 1
。1 to N * 2 - 1
运行外部循环。循环结构应类似于for(i=1; i<N*2; i++)
。for(j=1; j<=columns; j++)
。在此循环中,打印星级。在内循环检查之后,if(i <= N)
然后递增columns
,否则递减1。
int columns=1;
int N=3;
for(int i=1;i<N*2;i++)
{
for(int j=1; j<=columns; j++)
{
System.out.print("*");
}
if(i < N)
{
/* Increment number of columns per row for upper part */
columns++;
}
else
{
/* Decrement number of columns per row for lower part */
columns--;
}
/* Move to next line */
System.out.print("\n");
}