黑马程序员技术交流社区

标题: 各位大神 求问使用for循环打印菱形的思路是怎么样的? [打印本页]

作者: Blackay    时间: 2014-5-20 21:14
标题: 各位大神 求问使用for循环打印菱形的思路是怎么样的?
我看过代码 但是完全没有思路啊 不知道怎么写出来的 还请各位大神指点迷津
作者: LJZkevin    时间: 2014-5-20 21:35

  1. class PrintTriggle
  2. {
  3.         public static void printTriggle(int count)
  4.     {
  5.             for(int x=0;x<count;x++)
  6.             {
  7.                     niubi(count,x);
  8.             }
  9.            
  10.             for(int x=count-2;x>=0;x--)
  11.             {
  12.                     niubi(count,x);
  13.             }
  14.     }
  15.    
  16.         private        static        void niubi(int count,int x)
  17.     {
  18.             for(int j=0;j<count-1-x;j++)
  19.                 {
  20.                         System.out.print(" ");
  21.                 }
  22.                 System.out.print("*");
  23.                 for(int z=0;z<x;z++)
  24.                 {
  25.                         System.out.print(" *");
  26.                 }
  27.                 System.out.println();
  28.     }
  29. }

  30. public class Child  {  

  31.     public static void main(String[] args) {  
  32.            
  33.             PrintTriggle.printTriggle(14);
  34.            
  35.     }
  36.    

  37. }


  38. class PrintTriggle
  39. {
  40.         public static void printTriggle(int count)
  41.     {
  42.             for(int x=0;x<count;x++)
  43.             {
  44.                     niubi(count,x);
  45.             }
  46.            
  47.             for(int x=count-2;x>=0;x--)
  48.             {
  49.                     niubi(count,x);
  50.             }
  51.     }
  52.    
  53.         private        static        void niubi(int count,int x)
  54.     {
  55.             for(int j=0;j<count-1-x;j++)
  56.                 {
  57.                         System.out.print(" ");
  58.                 }
  59.                 System.out.print("*");
  60.                 for(int z=0;z<x;z++)
  61.                 {
  62.                         System.out.print(" *");
  63.                 }
  64.                 System.out.println();
  65.     }
  66. }

  67. public class Child  {  

  68.     public static void main(String[] args) {  
  69.            
  70.             PrintTriggle.printTriggle(14);
  71.            
  72.     }
  73.    

  74. }
复制代码

//把菱形分成两个,一个上三角形,一个下三角形;
//上三角形输出空格和星
//下三角形输出空格和星
作者: skill20    时间: 2014-5-20 21:59
  1. public static void printShape(){
  2.                 for(int x = 0; x < 4 ; x++){
  3.                         for(int y = x; y < 4; y++)
  4.                                 System.out.print(" ");
  5.                         for(int z = 0; z <= x ; z++)
  6.                                 System.out.print("*" + " ");
  7.                         System.out.println();
  8.                 }
  9.                 for(int x = 0; x < 3; x++){
  10.                         for(int y = 0; y <= x + 1; y++)
  11.                                 System.out.print(" ");
  12.                         for(int z = x; z < 3; z++)
  13.                                 System.out.print("*" + " ");
  14.                         System.out.println();
  15.                 }
  16.         }
复制代码

作者: 观决    时间: 2014-5-20 22:07
本帖最后由 观决 于 2014-5-20 22:14 编辑
  1.   public static void show(int num){
  2.                         int x=(num+1)/2;
  3.                         for(int i=1;i<=num;i++){
  4.                                 for(int j=Math.abs(x-i);j>=0;j--){//找规律  2 1 0 1 2                                       System.out.print(" ");
  5.                                 }
  6.                                 for(int k=1;k<=(x-Math.abs(x-i));k++){//找规律` 1 2 3 2 1  左右对称 所以外+" "
  7.                                         System.out.print("* ");
  8.                                 }
  9.                                 System.out.println();
  10.                         }
  11.                 }
复制代码



这里num只能是奇数  菱形嘛 奇数才可以吧   然后 这是5层的时候



作者: 丁绍然    时间: 2014-5-20 22:12
这个就是用不同的方法隔开了、
首先说你的代码重复了,
主方法是调用一个打印菱形的方法, printTriggle方法是嵌套的外层循环,niubi是内层循环。其中菱形分为两部分,上三角和下方法。
第一个for是控制上三角的行数,第二个for是控制下三角的每行数。每个for循环调用了niubi方法,其中niubi方法里的两个for分别控制了每行的空格和星号数量。
你可以把niubi方法中的内容直接放到调用它的地方。这样很容易看出来是嵌套循环。
作者: 周俊波    时间: 2014-5-20 22:49
其实嘛,棱形你分开来看,一行一行的看,仔细找规律,就行了

作者: 肥洋洋    时间: 2014-5-20 22:58
思路:打印另行可以先打个等腰三角形,列成2个*的等差数列,前面用个倒三角形的空格隔开就可以形成一个等腰三角形的输出了;后面在跟上上面代码反过来输出就可以了,把反三角的空格换成正三角




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