public class Testing { public static void main(String[] args) {
for (int i = 1; i <= 7; i++) {
if (i <= 3) {
for (int j = 1; j <= 7; j++) {
if (j == i + 3 || j == 5 - i) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
} else {
for (int k = 1; k <= 7; k++) {
if (k == i - 3 || k == 11 - i) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
}
System.out.println();
} }}

解决方案 »

  1.   

       一个for循环内嵌了两个for循环还能说出:一个for循环就能打印出一个空心菱形!
      

  2.   

    System.out.print("空心菱形");
    :)
      

  3.   

    LZ哦  我数学不太好啊,几个for啊
      

  4.   

    public class Testing {
    static int NUM = 14;
    public static void main(String[] args){
    int i;
    int num = NUM/2;
    for(i=0 ;i < NUM*NUM-NUM; ++i){
    if((i+1) == ((i+1)/NUM)*NUM +num || (i+1) == ((i+1)/NUM)*NUM+NUM-num)
    System.out.print("*");
    else
    System.out.print(" ");
    if((i+1) % NUM == 0 && (i+1)/NUM < NUM/2){
    num--;
    System.out.println();
    }
    if((i+1) % NUM == 0 && (i+1)/NUM >= NUM/2){
    num++;
    System.out.println();
    }
    }
    }
    }
      

  5.   

    挺简单的,调NUM的值改变菱形的大小
    public class Testing {
        static int NUM = 14;
        public static void main(String[] args){
            int i;
            int num = NUM/2;
            for(i=0 ;i < NUM*NUM-NUM; ++i){
                if((i+1) == ((i+1)/NUM)*NUM +num || (i+1) == ((i+1)/NUM)*NUM+NUM-num)
                    System.out.print("*");
                else
                    System.out.print(" ");
                if((i+1) % NUM == 0 && (i+1)/NUM < NUM/2){
                    num--;
                    System.out.println();
                }
                if((i+1) % NUM == 0 && (i+1)/NUM >= NUM/2){
                    num++;
                    System.out.println();
                }
            }
        }
    }
      

  6.   

    不用for循环打出空心菱形public class Test {
    public static void main(String[] args) {
    System.out.println("   *   ");
            System.out.println("  * *  ");
            System.out.println(" *   * ");
            System.out.println("*     *");
            System.out.println("*     *");
            System.out.println(" *   * ");
            System.out.println("  * *  ");
            System.out.println("   *   ");
            
    }
    }
      

  7.   

    顶,这才是高手,for循环都不用就打出了空心菱形!!!
      

  8.   

       
    public class Testing {
    public static void main(String[] args){
    for(int i=1;i<=7;i++){

    if(i<=3){
    for(int j=1;j<=7;j++){
    if (j == i + 3 || j == 5 - i) {
    System.out.print("*");
    }else{
    System.out.print(" ");
    }

    }
    }

    else{
    for (int k = 1; k <= 7; k++) {
    if (k == i - 3 || k == 11 - i) {
    System.out.print("*");
    }else{
    System.out.print(" ");
    }
    }
    }


    System.out.println();
    }
    }}     
    对齐下,学习了...........
      

  9.   


    public static void main(String[] args) {
    print(5);
    }

    public static void print(int n) {
    if(n % 2 == 0) n ++;

    int row = 0;
    int r = 0;
    int col = 0;
    for(int i = 0; i < n * n ; i ++) { if(col == (n/2-r) || col == (n/2+r))
    System.out.print("*");
    else
    System.out.print(" "); if(++col == n)
    col = 0;

    if(i + 1 == n * (row+1)) {
    System.out.println();
    row ++;
    if(row <= n/2)
    r ++;
    else 
    r --;
    }
    }
    }
      

  10.   


    public static void main(String[] args) {
    int type=0;//0代表打印中部以上,1代表打印中部分,2代表打印下部分
    int param=3;//param代表行数
    int j=0;
    label: for (int i=1; i<2*param-1; i+=2) {
    switch (type) {
    case 0:
    j=0;
    do{
    System.out.print("*");
    j++;
    }while(j!=i);
    System.out.println();
    if(j==param){
    type++;
    i=0;
    continue label;
    }
    break;

    case 1:
    j=0;
    do{
    System.out.print("*");
    j++;
    }while(j!=2*param-1);
    System.out.println();
    type++;
    i=-1;
    continue label;
    case 2:
    j=2*param-1;
    do{
    System.out.print("*");
    j-=2;
    }while(j!=(i*2-3));
    System.out.println();
    if(j==1)
    break label;
    default:
    break;
    }
    }
    }有兴趣的可以改下,写的差不多了
      

  11.   

    图形输出是数、形转换的基础,如果连这些基本的转换都弄不好,上升到三维空间后只可能是一头雾水。还有楼上的各位,LZ的问题是要输出空心菱形吧……
    其实弄清楚菱形边与行数的函数关系其实并不难:
    public static void main(String[] args) {
    System.out.print("请输入菱形的半轴长(小于11个字符):"); try {
    int n = new Scanner(System.in).nextInt(); if (n <= 0 || n > 10) {
    System.out.println("输入数据无效!");
    return;
    } int num = 2 * n - 1;
    for (int i = 0; i < 4 * n * n - 4 * n + 1; i++) {
    int row = i / num + 1, col = i % num + 1; if (col == Math.abs(row - n) + 1
    || num - col == Math.abs(row - n))
    System.out.print("*");
    else
    System.out.print(" "); if (col == num)
    System.out.println();
    }
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    另外,在C#下找出了个投机取巧的方法(Java下面还没发现这样的功能):
            static void Main(string[] args)
            {
                int n;
                string temp;            Console.Write("请输入菱形的半轴长(小于11个字符):");
                temp = Console.ReadLine();            if (!(int.TryParse(temp, out n)))
                {
                    Console.WriteLine("输入数据至少是个数吧……");
                    return;
                } if (n <= 0 || n > 10)
                {
    Console.WriteLine("输入数据无效!");
    return;
    }            for (int i = 1; i <= 2 * n - 1; i++)
                {
                    int num = Math.Abs(i - n);                Console.Write(new string(' ', num) + '*');                if (num < n - 1)
                        Console.Write(new string(' ', 2 * (n - num - 1) - 1) + '*');                Console.WriteLine();
                }
            }
      

  12.   


    public static void main(String[] args) {
    int type=0;//0代表打印中部以上,1代表打印中部分,2代表打印下部分
    int param=1;//param代表行数
    int j=0;
    label: for (int i=1; i<=param; i++) {
    switch (type) {
    case 0:
    j=1;
    do{
    if(j==param-i-(param/2-1) || j == param/2+i)
    System.out.print("*");
    else 
    System.out.print(" ");
    j++;
    }while(j!=param);
    System.out.println();
    if(i==param/2){
    type++;
    i=0;
    continue label;
    }
    break;
    case 1:
    j=0;
    do{
    if(j==0 || j==param-1)
    System.out.print("*");
    else
    System.out.print(" ");
    j++;
    }while(j!=param);
    System.out.println();
    type++;
    i=param/2+1;
    continue label;
    case 2:
    j=1;            
    do{
    if (j == param+param/2 +1- i || j == i- param/2)
    System.out.print("*");
    else
    System.out.print(" ");
    j++;
    }while(j!=param+1);
    System.out.println();
    if(i==param)
    break label;
    default:
    break;
    }
    }
    }
    写了不能白写,自知不如38楼
      

  13.   


    public static void main(String[] args) throws Exception {
    int size = 5;
    if (size % 2 == 0) {
    size++;
    }
    int p = size / 2;
    for (int i = 0; i < 5; i++) {
    byte[] tmp = new byte[size];
    if (i <= p) {
    tmp[p - i] = '*';
    tmp[p + i] = '*';
    } else {
    tmp[p - (size - 1 - i)] = '*';
    tmp[p + (size - 1 - i)] = '*';
    }
    System.out.println(new String(tmp));
    }
    }
      

  14.   

    更正一下,循环的范围要改成size public static void main(String[] args) throws Exception {
    int size = 10;
    if (size % 2 == 0) {
    size++;
    }
    int p = size / 2;
    for (int i = 0; i < size; i++) {
    byte[] tmp = new byte[size];
    if (i <= p) {
    tmp[p - i] = '*';
    tmp[p + i] = '*';
    } else {
    tmp[p - (size - 1 - i)] = '*';
    tmp[p + (size - 1 - i)] = '*';
    }
    System.out.println(new String(tmp));
    }
    }
      

  15.   

    思路不错,利用Java会自动初始化数组的特性。
      

  16.   

    擦,写个菱形,switch结构都出来勒,强悍啊
      

  17.   

    import java.util.Scanner;public class Test1
    {
      public static void main(String[] args) 
    {
      int num = 4;//行数等于num*2+1
      for(int y = num;Math.abs(y)<num+1;y--)
      {
      for(int x=-num;Math.abs(x)<num+1;x++)
      {
      if(Math.abs(x)+Math.abs(y)==num)
      {
      System.out.print("*");
      }
      else
      {
      System.out.print(" ");
      }
      }
      System.out.println();
      }
    }
      
    }
      

  18.   

    我是根据坐标轴的对称性写的import java.util.Scanner;public class Test1
    {
      public static void main(String[] args) 
    {
      int num = 4; //行数等于num*2+1
      for(int y = num;Math.abs(y)<num+1;y--)
      {
      for(int x=-num;Math.abs(x)<num+1;x++)
      {
      if(Math.abs(x)+Math.abs(y)==num)
      {
      System.out.print("*");
      }
      else
      {
      System.out.print(" ");
      }
      }
      System.out.println();
      }
    }
      
    }