程序分析如下:
1、先假设要输出4个星(或者其它自己觉得方便计算的数,以下程序中,n为想输出星星的个数)
2、将输出的菱形分为两部分输出
<1>上半部分:
(1)假设i为行数,分析如下:
i = 1, 3空格, 1*
i = 2, 2空格, 2*
i = 3, 1空格, 3*
i = 4, 0空格, 4*
(2)i是控制行数的,所以第一个总循环的控制条件为(int i = 1;i <= n;i++)
(3)总循环里的第一个循环,控制输出空格,由分析可知:控制条件(int j = 1;j <= n - i;j++)
(4)总循环里的第二个循环,控制星型输出,由分析可知:控制条件(int k = 1;k <= i;k++)
<2>下半部分:
(1)到这里时,要将i的值设为n - 1(这是因为第n行已经由上半部分输出了,所以在下半部分只需要输出n - 1行就行),分析如下:
i = n - 1, 1空格, 3*
i = n - 2, 2空格, 2*
i = n - 3, 3空格, 1*
(2)这里一样i也是控制行数的,但这里使用i--输出,所以第二个总循环的控制条件为(int i = n - 1;i >= 1;i--)
(3)总循环的第一个循环,也是控制输出空格,由分析可知:控制条件(int j = 1;j <= n - i;j++)
(4)总循环的第二个循环,也是控制输出星型,由分析可知:控制条件(int k = n;k >= 1;k--)
3 import java.io.*;
45 public class OutputStar
6 {
7 public void Star( int n)
8 {
9 //输出上半部分星型
10 for ( int i = 1 ; i <= n; i++)
11 {
12 for ( int j = 1 ; j <= n - i; j++)
13 System.out.print( " " );
14 for ( int k = 1 ; k <= i; k++)
15 System.out.print( " *" );
16 System.out.print( " \n " );
17 }
18 //输出下半部分星型
19 for ( int i = n - 1 ; i >= 1 ; i--)
20 {
21 for ( int j = 1 ; j <= n - i; j++)
22 System.out.print( " " );
23 for ( int k = i; k >= 1 ; k--)
24 System.out.print( " *" );
25 System.out.print( " \n " );
26 }
27 }
28
29 public static void main(String[] args)
30 {
31 OutputStar star = new OutputStar();
32 String s = "" ;
33
34 try
35 {
36 BufferedReader in = new BufferedReader( new InputStreamReader(System.in));
37 s = in.readLine();
38 }
39 catch (IOException e)
40 {}
41
42 int n = Integer.parseInt(s);
43 star.Star(n);
44 }
45 }