程序分析如下:
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--)
3importjava.io.*;
4
5
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}