import java.util.*;
class temp
{
public static void main(String []args)
{
Scanner sc=new Scanner(System.in); int count=sc.nextInt(); int b=1;
for (int i=1; i<=count; i++)
{
if (!(i%2==0))
{
for (int j=count/2+1;j>b;j--)//j=count/2+1
{
System.out.print(" ");
}
}

for (int y=1; y<=i; y++)
{
if (!(i%2==0))
{
System.out.print("*");
}
} if (!(i%2==0))
{
System.out.println();
b++;
}
}
int a=1;
for (int i=count-2; i>0; i--)
{
if (!(i%2==0))
{
for (int j=0; j<a; j++)
    {
System.out.print(" ");
    }
} for (int y=i; y>0; y--)
{
if (!(i%2==0))
{
System.out.print("*");
}
}
if (!(i%2==0))
{

    System.out.println();
a++;
}
}
}
}关于打印 菱形的
就是在我注释那里  
如果count是偶数 用count/2 正好 如果是奇数就少一个" "
如果coutt是奇数 用count/2+1正好  偶数就多一个" "
好纠结啊..

解决方案 »

  1.   

    private int len=3;
    public void printRhombus(){
    if(len%2==0) --len;
    for (int i =len/2; i >=-len/2; i--) {
    System.out.print(repeatStr(" ", Math.abs(i)));
    System.out.print(repeatStr("*", len-Math.abs(i)*2));
    System.out.println(repeatStr(" ", Math.abs(i)));
    }
    }
    public String repeatStr(String str,int repeatCount){
    if(str==null || str.length()==0 || repeatCount<=0) return "";
    StringBuffer buf=new StringBuffer();
    for (int i = 0; i < repeatCount; i++)  buf.append(str);
    return buf.toString();
    }
      

  2.   


    这个问题和你上一个一样。只不过是在倒叙输出罢了
    import java.util.Scanner;public class B
    {
    public static void main(String[] args)
    {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    for(int i = 1;i <= n;i++)
    {
    for(int j = n - i;j >= 0;j--)
    {
    System.out.print(" ");
    }
    for(int j = 1;j <= (2 * i - 1);j++)
    System.out.print("*");
    System.out.println();
    }

    for(int i = n -1;i > 0;i--)
    {
    for(int j = n - i;j >= 0;j--)
    {
    System.out.print(" ");
    }
    for(int j = 1;j <= (2 * i - 1);j++)
    System.out.print("*");
    System.out.println();
    }
    }
    }
      

  3.   


    public class Main {
    public static void main(String[] args) {
    printDiamond(6);
    }

    public static void printDiamond(int edge){
    String star = "*";
    int i = 0;
    for(;i<edge-1;i++){
    System.out.print(" ");
    }
    i=0;
    for(;i<edge;i++){
    System.out.print(star);
    }
    System.out.println();
    int space1 = edge-1;
    int space2 = space1+edge-2;
    i=0;
    int j;
    for(;i<edge-2;i++){
    j = 0;
    for(;j<space2;j++){
    if(j==space1-1){
    System.out.print(star);
    }else{
    System.out.print(" ");
    }
    }
    System.out.print(star);
    System.out.println();
    space1--;
    space2--;
    }
    i=0;
    for(;i<edge;i++){
    System.out.print(star);
    }
    }}写了一个万能的方法给你   参数的意思是边长    虽然打印出来看上去不像菱形 但是如果按“*”的数量来算长度的话那就是菱形