黑马程序员技术交流社区

标题: 关于菱形的打印 [打印本页]

作者: 空心祭    时间: 2014-2-21 18:27
标题: 关于菱形的打印
要求:打印一个空心菱形
思路:可以分解成四个图形来打印
上边左边空格部位
上面右边星跟空格部位
下边空格部位
下边右边星跟空格部位

class Demo7
{
public static void main(String[] args)
{
  set(7);
}
public static void set(int num)
{
  for (int x =0; x <num ;x++ )
  {
   for (int y =x; y<num-1 ;y++ )//打印星号左边的空格三角形
   {
    System.out.print(" ");
   }
   for (int z = 0; z<=x ;z++ )//打印星号的等腰三角形的两个星号边
   {
    if (z==0 || z==x)
    {
     System.out.print("*"+" ");
    }
    else
     System.out.print("  ");
   }
   System.out.println();
  }
  
  for (int m =0; m <num-1 ;m++ )
  {
   for (int n =0; n<=m ;n++ )//打印下边星号左边的空格三角形
   {
    System.out.print(" ");
   }
   for (int h =m; h<num-1 ;h++ )//打印下面的等腰三角形的两个星号边
   {
    if (h==m || h==num-2)
    {
     System.out.print("*"+" ");
    }
    else
     System.out.print("  ");
   }
   System.out.println();
  }
}
}
这是我写的代码 但是这样写太墨迹,太麻烦了 有没有更简便的方式 可以简化循环嵌套的次数的


作者: osully    时间: 2014-2-21 21:37
闲的没事 刚学到二维数组 就顺便练习下 嘿嘿!!!

  1. package com.itheima.com;

  2. /**
  3. * 二维数组打印空心菱形.
  4. *
  5. * @author WB
  6. *
  7. */
  8. public class LingXing {
  9.         public static void main(String[] args) {
  10.                 lingXing(5);
  11.         }

  12.         static void lingXing(int num) {
  13.                 int i = num, j = num - 1;//初始化一个脚标值
  14.                 char[][] arr = new char[num * 2 - 1][num * 2 - 1];//定义一个二维数组,用来存放
  15.                 for (int x = 0; x < arr.length; x++) { //这个是打印左侧
  16.                         if (x < num) {
  17.                                 i = i - 1;
  18.                                 arr[x][i] = '*';
  19.                         } else {
  20.                                 i = i + 1;
  21.                                 arr[x][i] = '*';
  22.                         }
  23.                 }
  24.                 for (int y = 1; y < arr.length - 1; y++) {//这个打印右侧
  25.                         if (y < num) {
  26.                                 j = j + 1;
  27.                                 arr[y][j] = '*';
  28.                         } else {
  29.                                 j = j - 1;
  30.                                 arr[y][j] = '*';
  31.                         }
  32.                 }
  33.                 printArr(arr);
  34.         }

  35.         static void printArr(char[][] arr) { //打印数组函数
  36.                 for (int x = 0; x < arr.length; x++) {
  37.                         for (int y = 0; y < arr.length; y++)
  38.                                 System.out.print(arr[x][y]);
  39.                         System.out.println();
  40.                 }
  41.         }
  42. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2