黑马程序员技术交流社区

标题: 用for嵌套要怎么设计打印出这样的数值图谱 [打印本页]

作者: 深情小建    时间: 2013-9-29 22:17
标题: 用for嵌套要怎么设计打印出这样的数值图谱
看基础视频毕老师讲解for嵌套的时候有这么几个例子,

后来我自己想发散下思维,自己瞎搞了几个图像但是却写不出实现代码,真是汗颜啊~~~~~~~~~~~

还望有高手给我解决


不是规律的规律:
尖朝上,可以改变条件。让条件随着外循环变化
尖朝下,可以初始化值,让初始化随着外循环变化

毕老师的实例:
  1. /*               
  2. 1
  3. 12
  4. 123
  5. 1234
  6. 12345
  7. */
  8. for(int x=0;x<5;x++)
  9. {
  10.         for(int y=1;y<=x+1;y++)
  11.         {
  12.                 System.out.print(y);
  13.         }
  14.         System.out.println();
  15. }

  16. System.out.println("---------------------");

  17. /*               
  18. 12345
  19. 1234
  20. 123
  21. 12
  22. 1
  23. */
  24. for(int x=5;x>=1;x--)
  25. {
  26.         for(int y=1;y<=x;y++)
  27.         {
  28.                 System.out.print(y);
  29.         }
  30.         System.out.println();
  31. }
复制代码
希望有高手能够把下面这个图形打印出来
图形一、
        1
      212
    32123
  4321234
543212345

图形二、
543212345
  4321234
    32123
      212
        1

图形三、
        1
      212
    32123
  4321234
543212345
  4321234
    32123
      212
        1

图形四、
        5
      444
    33333
  2222222
111111111
  2222222
    33333
      444
        5




作者: 熊亮    时间: 2013-9-29 22:57
  1. public static void main(String[] args)
  2.         {
  3.                 for(int x=1;x<=5;x++)
  4.                 {
  5.                         for(int y=x+1;y<=5;y++)
  6.                         {
  7.                                 System.out.print(" ");
  8.                         }
  9.                         for(int z=1;z<=x;z++)
  10.                         {
  11.                                 System.out.print(x-z+1);
  12.                         }
  13.                         for(int m=2;m<=x;m++)
  14.                         {
  15.                                 System.out.print(m);
  16.                         }
  17.                         System.out.println();
  18.                 }
  19.         }
复制代码
//        1
//      212
//    32123
//  4321234
//543212345


作者: 杨增坤    时间: 2013-9-29 22:59
我给你一个例子:我打印出了第一个图形,其实其他的图像都是相似的,只需要稍微更改下就可以
  1. public class ClassDemo {
  2.         public static void main(String[] args) {
  3.                
  4.                 StringBuffer buf = new StringBuffer();
  5.                 for (int i = 1; i <= 5; i++) {
  6.                         if (i == 1) {
  7.                                 gg(5-i);
  8.                                 buf.append(i);
  9.                                 System.out.println(buf);
  10.                         } else {
  11.                                 gg(5-i);
  12.                                 buf.insert(0, i).append(i);
  13.                                 System.out.println(buf);
  14.                         }

  15.                 }
  16.         }
  17.         public static void gg(int n){
  18.                 for(int i=1;i<=n;i++){
  19.                         System.out.print(" ");
  20.                 }
  21.                
  22.         }

  23. }
复制代码
结果:
   1
   212
  32123
4321234
543212345


希望对你有帮助!


作者: 熊亮    时间: 2013-9-29 23:24
  1. public static void main(String[] args)
  2.         {
  3.                 for(int x=1;x<=5;x++)
  4.                 {
  5.                         for(int y=1;y<x;y++)
  6.                         {
  7.                                 System.out.print(" ");
  8.                         }
  9.                         for(int z=x;z<=5;z++)
  10.                         {
  11.                                 System.out.print(6-z);
  12.                         }
  13.                         for(int m=2;m<=6-x;m++)
  14.                         {
  15.                                 System.out.print(m);
  16.                         }
  17.                         System.out.println();
  18.                 }
  19.         }
复制代码
543212345
  4321234
   32123
     212
       1


作者: 熊亮    时间: 2013-9-29 23:32
杨增坤 发表于 2013-9-29 22:59
我给你一个例子:我打印出了第一个图形,其实其他的图像都是相似的,只需要稍微更改下就可以结果:
   1
  ...

师兄果然高级{:soso__10169062262133571330_1:}

作者: 风悠悠    时间: 2013-9-30 16:35
本帖最后由 风悠悠 于 2013-9-30 16:40 编辑
  1. public static void main(String[] args) {
  2.         int MaxNum=5;
  3.         int NowNum=MaxNum;
  4.         int printLen=0;
  5.         boolean sign=true;
  6.         int high=MaxNum*2-1;
  7.         while(high>0){
  8.                 printLen=(MaxNum-NowNum)*2+1;
  9.                 print(NowNum,printLen);
  10.                 high--;
  11.                 if(NowNum==1)
  12.                 sign=false;
  13.                 if(sign)
  14.                         NowNum--;
  15.                 if(!sign)
  16.                         NowNum++;
  17.        }      
  18. }
  19. public static void print(int NowNum,int printLen){
  20.         int count=NowNum;
  21.         while(count-1>0){
  22.                 System.out.print(" ");
  23.                 count--;
  24.         }
  25.         while(printLen>0){
  26.                 if(printLen==1)
  27.                         System.out.println(NowNum);
  28.                 else
  29.                         System.out.print(NowNum);
  30.                 printLen--;
  31.         }
  32. }
复制代码
打印结果
    5
   444
  33333
2222222
111111111
2222222
  33333
   444
    5

作者: 睡不够的猪    时间: 2013-10-1 11:29
  1. class  TuXing
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for(int x=1;x<=5;x++)
  6.                 {
  7.                         for(int y=x+1;y<=5;y++)
  8.                         {
  9.                                 System.out.print(" ");
  10.             }
  11.             for(int z=1;z<=x;z++)
  12.             {
  13.                 System.out.print(5-x+1);
  14.             }
  15.             for(int a=2;a<=x;a++)
  16.             {
  17.                 System.out.print(5-x+1);
  18.             }
  19.             System.out.println();
  20.         }
  21.                 for(int x1=1;x1<=4;x1++)
  22.         {
  23.             for(int y1=1;y1<=x1;y1++)
  24.             {
  25.                 System.out.print(" ");
  26.             }
  27.             for(int z1=x1;z1<=4;z1++)
  28.             {
  29.                 System.out.print(x1+1);
  30.             }
  31.             for(int a1=2;a1<=5-x1;a1++)
  32.             {
  33.                 System.out.print(a1+1);
  34.             }
  35.             System.out.println();
  36.         }
  37.     }
  38. }
复制代码
5
      444
    33333
  2222222
111111111
  2222222
    33333
      444
        5





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