思路
程序实现分析
- 用for循环控制行数
- 用一个for循环分别打印每一行的空格数(星号*左侧空格数)
- 用另外一个for循环打印每一行的星号*数
具体分析实例
- 先看具体实例,找出内在规律
输入的是5,得到5行*号
行数 i | *左边空格数 j | *数 k |
---|---|---|
1 | 2 | 1 |
2 | 1 | 3 |
3 | 0 | 5 |
4 | 1 | 3 |
5 | 2 | 1 |
j =|3-i|、k=5-2×j(*总数=输入行数-2×(*左边空格数));
从图中可看出,3是列的中间数,3=(5+1)/2;
具体实现
public static void PrintDiamunond(int num)
{
int t = num+1;
for(int i=1; i<=num; i++)
{
for(int j = 1; j<=Math.abs(t/2-i); j++) //计算*号左边的空格数
{
System.out.print(" ");
}
for(int k = 1; k<=num-2*Math.abs(t/2-i);k++) //*号总数=输入行数-2*空格数
{
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
/* System.out.println("请输入一个奇数,且大于等于5,小于等于11");
Scanner input = new Scanner(System.in);
int num =input.nextInt();
if(num % 2 ==0)
System.out.println("输入为偶数");
else if ((num < 5)||(num >11)) {
System.out.println("输入的数值不在5到11之间");
} else {
PrintStar(num);
PrintDiamunond(num);
}
*/
PrintDiamunond(5);
}
}