A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 空心祭 中级黑马   /  2014-2-21 18:27  /  1012 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

要求:打印一个空心菱形
思路:可以分解成四个图形来打印
上边左边空格部位
上面右边星跟空格部位
下边空格部位
下边右边星跟空格部位

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();
  }
}
}
这是我写的代码 但是这样写太墨迹,太麻烦了 有没有更简便的方式 可以简化循环嵌套的次数的

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

1 个回复

倒序浏览
闲的没事 刚学到二维数组 就顺便练习下 嘿嘿!!!

  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马