黑马程序员技术交流社区

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

作者: lilin202011    时间: 2014-4-5 23:34
标题: 关于java打印菱形的问题
本帖最后由 lilin202011 于 2014-4-5 23:41 编辑

大家看我写的java打印菱形对不
  1. public class ForTest4
  2. {
  3.      public static void main(String[] args){
  4.           for(int x=1;x<=5;x++){
  5.                for(int y=1;y<=5-x;y++){
  6.                        System.out.print(" ");
  7.                 }
  8.                for(int z=1;z<=x;z++){
  9.                         System.out.print("*"+" ");
  10.                 }
  11.                         System.out.println();
  12.            }
  13.                 for(int x=1;x<=5;x++){
  14.               for(int z=1;z<=x;z++){
  15.               
  16.                   System.out.print(" ");
  17.               }
  18.                for(int y=1;y<=5-x;y++){

  19.                   System.out.print("*"+" ");
  20.               }
  21.                         
  22.                   System.out.println();
  23.                         
  24.               }
  25.      }
  26. }
复制代码
我第一个大的for循环打印出来的是5行,第二个大的for循环打印的却是4行 有一行却是空行,不过还是凑成了一个菱形,不知道这种写菱形的方法正确不,请大神们给予评价,另外给我一个简便的写菱形的方法,在此谢过了



作者: 帅哥哥    时间: 2014-4-6 03:21
你这个就挺好的,可以当成【论坛分享】了!
  1. /*
  2. 需求:打印菱形
  3. ----*-
  4. ---*-*-
  5. --*-*-*-
  6. -*-*-*-*-
  7. *-*-*-*-*-
  8. -*-*-*-*-
  9. --*-*-*-
  10. ---*-*-
  11. ----*-
  12. 分析与思路:(设菱形边长为 num )
  13. 1.图形为二维,用两个 for 循环嵌套,
  14.         外层循环控制行数,
  15.         内层循环控制每行打印的内容与数量
  16. 2.菱形分上 num 行, 下 (num-1) 行,分别打印
  17.         上 num 行又分又分两部分打印,
  18.                 一部分打印 (空) 倒三角,
  19.                 一部分打印 *(空) ,控制数量即可
  20.         下 (num-1) 行同理
  21. */


  22. class Test
  23. {
  24.         public static void main(String[] args)
  25.         {
  26.                 printRhombus(8);
  27.         }

  28.         public static void printRhombus(int num)
  29.         {
  30.                 for(int x=1;x<=num;x++)
  31.                 {
  32.                         for(int y=1;y<=num-x;y++)
  33.                         {
  34.                                 System.out.print(" ");
  35.                         }
  36.                         for(int z=1;z<=x;z++)
  37.                         {
  38.                                 System.out.print("*"+" ");
  39.                         }
  40.                         System.out.println();
  41.                 }
  42.                 for(int x=1;x<=num-1;x++)
  43.                 {
  44.                         for(int z=1;z<=x;z++)
  45.                         {
  46.                                 System.out.print(" ");
  47.                         }
  48.                         for(int y=1;y<=num-x;y++)
  49.                         {
  50.                                 System.out.print("*"+" ");
  51.                         }
  52.                         System.out.println();
  53.                 }
  54.         }
  55. }
复制代码

作者: alucard    时间: 2014-4-6 08:50
  1. class ForTest10
  2. {
  3. /*

  4. ----*
  5. ---***
  6. --*****
  7. -*******
  8. *********
  9. -*******
  10. --*****
  11. ---***
  12. ----*

  13. 1
  14. ----*
  15. ---** *
  16. --*** **
  17. -**** ***
  18. ***** ****
  19.   2     3

  20. 4  5   6
  21. -**** ***
  22. --*** **
  23. ---** *
  24. ----*

  25. */
  26.         public static void main(String[] args)
  27.         {
  28.                 //外循环控制行数
  29.                 for (int a=0;a<5 ;a++ )
  30.                 {
  31.                         //打印" "
  32.                         for (int b=a;b<4 ;b++ )
  33.                         {
  34.                                 System.out.print(" ");
  35.                         }
  36.                         //打印左边的*
  37.                         for (int c=0; c<=a ;c++ )
  38.                         {
  39.                                 System.out.print("*");
  40.                         }
  41.                         //打印右边的*
  42.                         for (int d=0;d<a ;d++ )
  43.                         {
  44.                                 System.out.print("*");
  45.                         }
  46.                         //打印换行
  47.                         System.out.println();
  48.                 }
  49.                 //外循环控制行数
  50.                 for (int e=0;e<4 ;e++ )
  51.                 {
  52.                         //打印" "
  53.                         for (int f=0;f<e+1 ;f++ )
  54.                         {
  55.                                 System.out.print(" ");
  56.                         }
  57.                         //打印左边的*
  58.                         for (int g=e;g<4 ;g++ )
  59.                         {
  60.                                 System.out.print("*");
  61.                         }
  62.                         //打印右边的*
  63.                         for (int h=e;h<3 ;h++ )
  64.                         {
  65.                                 System.out.print("*");
  66.                         }
  67.                         //打印换行
  68.                         System.out.println();
  69.                 }
  70.                
  71.         }
  72. }
复制代码


先将图型分成6个小图形,分别打印每一个图型,这个方法比较容易理解,就是有些笨重。


作者: lilin202011    时间: 2014-4-6 12:20
alucard 发表于 2014-4-6 08:50
先将图型分成6个小图形,分别打印每一个图型,这个方法比较容易理解,就是有些笨重。

...

嘻嘻,这个确实有那么一点麻烦,不过我还是要好好学学这个方法
作者: lilin202011    时间: 2014-4-6 12:21
帅哥哥 发表于 2014-4-6 03:21
你这个就挺好的,可以当成【论坛分享】了!

嘻嘻,谢谢夸奖:handshake
作者: lilin202011    时间: 2014-4-7 10:38
谢谢大家对我的支持




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