日期:2014-05-20  浏览次数:20701 次

关于菱形打印
1 public class Var_02 {
2 public static void main(String args[]){
3 for(int i=1;i<=7;i+=2){
4 for(int kong=7;kong>i-1;kong--){
5 System.out.print(" ");
6 }
7 for(int xing=1;xing<=i;xing++){
8 System.out.print("* ");
9 }
10 System.out.println();
11 }
12 for(int j=1;j<=5;j+=2){
13 for(int kong1=1;kong1<j+3;kong1++){
14 System.out.print(" ");
15 }
16 for(int xing1=5;xing1>=j;xing1--){
17 System.out.print("* ");
18 }
19 System.out.println();
20 }
21 }
22 }
上边怎么打印出的菱形啊 没看懂 好比1-11行打印上半个菱形,先打印了7个空格,然后带你一个* 那个*怎么能保证放在中间位置的?另外,如果把8和17引号内改成只有一个*,而不是*和空格,则只打印左侧菱形, 搞不懂啊搞不懂...

------解决方案--------------------
我的代码:
public class printDiamond {
public static void main(String[] args){
//利用while循环判断用户输入的是否是奇数
Scanner input=new Scanner(System.in);
System.out.print("请输入菱形行数: ");
int rows=input.nextInt();
while(rows%2==0)
{
System.out.println("请输入奇数: ");
rows=input.nextInt();
}
//分步打印。先打印菱形的上半部
int n=(rows+1)/2;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n-i;j++)
System.out.print(" ");
for(int k=1;k<=2*i-1;k++)
System.out.print("*");
System.out.print("\n");
}
//分步答应。打印菱形的下半部
for(int i=1;i<=rows-n;i++)
{
for(int j=1;j<=i;j++)
System.out.print(" ");
for(int k=1;k<=2*(rows-n-i+1)-1;k++)
System.out.print("*");
System.out.print("\n");
}
}

}