2014-03-27 30 views
-3

我想下面的星星图案打印关于星星的图案

* 
*** 
***** 
*** 
* 

我使用下面的逻辑来打印:

* 
*** 
***** 

代码上半年:

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(); 
} 

但我仍然不确定如何打印整个结构。

+2

有哪些具体要求?你必须使用'for'循环吗?行数是否必须灵活?另外,你可以使用* \ n *** \ n等。 – Bathsheba

+0

顺便说一句,这样做的聪明方法是使用'for(i = -a; i <= + a; ++ i) '。然后,在该行上打印的星号的形式为'n - | i |',其中'| i |'表示'i'的绝对值。 'n'可能是'a + 1'。 – Bathsheba

+0

这是一个家庭作业问题,是吗? – 2014-03-27 08:28:43

回答

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

你可以做一个递归函数,或者你可以使用一个StringBuilder来避免所有的打印和打印。取决于用户想要做什么。有很多方法可以解决这个问题。 – Slimu

1

这也许会是有意义作为简单的步骤尽可能去。

首先,你需要五线,所以

for (i = 1; i <= 5; i++) { 

接下来,在线i,决定你要去的地方星号的数量。在第3行有5个星号,每个步骤在该行以上或以下有两个。

int len = 5 - Math.abs (i - 3) * 2; 

然后,只需将它们放在一个循环:

for (j = 1; j <= len; j++) 
     System.out.print("*"); 

,其中包括一个新行:

System.out.println(); 
}