黑马程序员技术交流社区

标题: java中关于打印图形的收集(持续补充中,来的有分拿) [打印本页]

作者: 奋斗的青春    时间: 2012-11-29 15:49
标题: java中关于打印图形的收集(持续补充中,来的有分拿)
本帖最后由 吴愿涛 于 2012-11-29 18:53 编辑

各位看官,有的就继续补充 ,多多益善,都有分拿!{:soso_e122:}
  1. package com.itheima.打印图形;

  2. /*
  3. * for(条件) {
  4. //外循环执行语句;
  5. for (条件) {

  6. 内循环执行语句;
  7. }
  8. }
  9. */
  10. public class ForNestedLoop {
  11. public static void main(String[] args) {
  12. 矩形();
  13. 靠左的三角形();
  14. 靠右的三角形();
  15. 等腰三角形();
  16. 带尖的等腰三角形1();
  17. 带尖的等腰三角形2();
  18. 倒三角();
  19. 空心菱形();
  20. }
  21. public static void 矩形() {
  22. System.out.println("------------矩形--------------");
  23. // 外层寻缘控制行,
  24. for (int i = 0; i < 10; i++) {
  25. // 内层循环控制列
  26. for (int j = 0; j < 10; j++) {
  27. System.out.print("*");
  28. }

  29. System.out.println();
  30. }
  31. }

  32. public static void 靠左的三角形() {
  33. System.out.println("------------靠左的三角形--------------");
  34. for (int i = 0; i < 10; i++) {

  35. for (int j = 10 - i; j < 10; j++) {
  36. System.out.print("*");
  37. }
  38. System.out.println("*");
  39. }
  40. }

  41. /**
  42. *
  43. */
  44. public static void 靠右的三角形() {
  45. System.out.println("------------靠右的三角形--------------");
  46. for (int i = 0; i < 10; i++) {
  47. for (int j = i; j < 10; j++) {
  48. System.out.print(" ");
  49. }
  50. for (int j = 10 - i; j < 10; j++) {
  51. System.out.print("*");
  52. }
  53. System.out.println();
  54. }

  55. }

  56. /**
  57. * 等腰三角形
  58. */
  59. public static void 等腰三角形() {
  60. System.out.println("-----------等腰三角形---------------");
  61. for (int i = 0; i < 10; i++) {
  62. for (int j = i; j < 10; j++) {
  63. System.out.print(" ");
  64. }
  65. for (int j = 10 - i; j < 10 + i; j++) {
  66. System.out.print("*");
  67. }
  68. System.out.println();
  69. }

  70. }
  71. /**
  72. * 带尖的等腰三角形1
  73. */
  74. private static void 带尖的等腰三角形1() {
  75. System.out.println("------------------带尖的等腰三角形1---------------------");
  76. for(int i=0;i<10;i++){
  77. //每行之前的空格
  78. for(int j=i;j<10;j++){
  79. System.out.print(" ");
  80. }
  81. //每行的*号
  82. for(int j=9-i;j<10+i;j++){
  83. System.out.print("*");
  84. }
  85. System.out.println();
  86. }

  87. }
  88. /**
  89. * 带尖的等腰三角形2
  90. */
  91. private static void 带尖的等腰三角形2() {
  92. System.out.println("------------------带尖的等腰三角形2---------------------");
  93. for(int i=0;i<10;i++){
  94. //空格
  95. for(int j=0;j<10-i;j++){
  96. System.out.print(" ");
  97. }
  98. //*号
  99. for(int k=0;k<2*i-1;k++){
  100. System.out.print("*");
  101. }
  102. System.out.println();
  103. }
  104. }


  105. /**
  106. * 倒三角
  107. */
  108. private static void 倒三角() {
  109. System.out.println("------------------------倒三角------------------------");
  110. for(int i=0;i<=9;i++){
  111. //空格
  112. for(int j=1;j<=i;j++){
  113. System.out.print(" ");
  114. }
  115. //*号
  116. for(int k=1;k<=19-2*i;k++){
  117. System.out.print("*");
  118. }
  119. System.out.println();
  120. }
  121. }
  122. /**
  123. * 空心菱形
  124. */
  125. private static void 空心菱形(){
  126. System.out.println("-------------------------空心菱形--------------------------------");
  127. for(int i=1;i<=10;i++){
  128. for(int j=1;j<=10-i;j++){
  129. System.out.print(" ");
  130. }
  131. for(int k=1;k<=2*i-1;k++){
  132. if(k==1 || k==2*i-1){
  133. System.out.print("*");
  134. }else{
  135. System.out.print(" ");
  136. }
  137. }
  138. System.out.println();
  139. }
  140. //---------------^------------------------------
  141. for(int i=1;i<=9;i++){
  142. for(int j=1;j<=i;j++){
  143. System.out.print(" ");
  144. }
  145. for(int k=1;k<=19-2*i;k++){
  146. if(k==1 || k==19-2*i){
  147. System.out.print("*");
  148. }else{
  149. System.out.print(" ");
  150. }
  151. }
  152. System.out.println();
  153. }

  154. }







  155. }
复制代码

分别对应以下图形;
----------------------------------------------矩形------------------------------------------------
**********
**********
**********
**********
**********
**********
**********
**********
**********
**********
---------------------------------------靠左的三角形--------------------------------------------
*
**
***
****
*****
******
*******
********
*********
**********
---------------------------------------靠右的三角形------------------------------------------
         
                 *
               **
             ***
           ****
         *****
       ******
     *******
   ********
*********
--------------------------------------------等腰三角形--------------------------------------------
         
           **
         ****
       ******
      ********
     **********
    ************
   **************
  ****************
******************
---------------------------------带尖的等腰三角形1---------------------------------------------
          *
         ***
        *****
       *******
      *********
     ***********
    *************
   ***************
  *****************
*******************
--------------------------------带尖的等腰三角形2-----------------------------------------------
         
           *
         ***
        *****
       *******
      *********
     ***********
    *************
  ***************
*****************
-------------------------------------------------倒三角------------------------------------------
*******************
*****************
  ***************
   *************
    ***********
     *********
      *******
       *****
        ***
         *
--------------------------------------------空心菱形---------------------------------------------
         *
        * *
       *   *
      *     *
     *       *
    *         *
   *           *
  *             *
*               *
*                 *
*               *
  *             *
   *           *
    *         *
     *       *
      *     *
       *   *
        * *
         *
  1. /**
  2. *
  3. */
  4. package com.itheima.打印图形;

  5. /**
  6. * @author 吴愿涛
  7. * 1.外层判断循环条件,满足进入外层循环体
  8. * 2.内层判断循环条件
  9. * 3.内层循环体执行
  10. * 4.内层循环变量累加,回到2执行,直到不满足内层条件
  11. * 5.外层循环变量累加,回到1执行,直到不满足外层循环条件,彻底退出循环
  12. *
  13. *
  14. */
  15. public class _9X9 {
  16. public static void main(String[] args) {
  17. _9x9();
  18. _9x9_2();
  19. }
  20. /* 实际上是打印了一个乘法表,1*1开始9*9结束。
  21. 1.首先赋值i = 1, 然后判断i <=9,满足条件,进入外层循环体
  22. 2.赋值j=1,判断j<=i ,(此时两个值相同),满足条件,进入内层循环,输出j*i,执行j++, 也就是j=2.
  23. 执行System.out.println();输出一个换行符号
  24. 3.到此外层第一次循环结束,执行i++,也就是i=2了,然后判断i <=9,满足条件,
  25. 再次进入外层循环体
  26. 4.赋值j=1,判断j<i ,满足条件,进入内层循环体,输出2*1=2。
  27. 5,内层循环体第一次循环结束,循环变量 j++,j=2了,再次判断j<i ,
  28. 不满足条件,退出内层循环
  29. 6,执行System.out.println();输出一个换行符号
  30. 7,由此重复3~6,i =3时,打印 3*1=33*2=6,i=4时,打印4*1=44*2=84*3=12,
  31. 当i=9时执行最后一次循环,9*1=9....9*9=81,之后累加i =10,不满足外层循环,彻底退出.*/
  32. public static void _9x9() {
  33. System.out.println("--------------九九乘法表1------------------");
  34. for (int i=1;i<=9;i++){
  35. for(int j=1;j<=i;j++){
  36. System.out.print(j+"*"+i+"="+j*i+"\t");
  37. }
  38. System.out.println();
  39. }
  40. }
  41. public static void _9x9_2(){
  42. System.out.println("--------------九九乘法表2------------------");
  43. System.out.print("X\t|");
  44. for(int n=1;n<10;n++){
  45. System.out.print("\t"+n);
  46. }
  47. System.out.println("\n----------------------------------------------------------------------------------------");
  48. for(int i=1;i<10;i++){
  49. System.out.print(i+"\t|");
  50. for(int j=1;j<10;j++){
  51. System.out.print("\t"+i*j);
  52. }
  53. System.out.println();
  54. }
  55. }


  56. }
复制代码

9x9.png (41.34 KB, 下载次数: 244)

9x9.png

作者: 奋斗的青春    时间: 2012-11-29 16:10
沙发,你妹。{:soso_e102:}
  1. package com.itheima.打印图形;
  2. class 空心三角形
  3. {
  4. public static void main(String[] args)
  5. {
  6. //控制行数
  7. for (int i=1; i<=10; i++)
  8. {
  9. //控制第一部分的空格数
  10. for (int j=1; j<=11-i; j++)
  11. {
  12. System.out.print(" ");
  13. }
  14. //控制三角形部分
  15. for (int k=1; k<=2*i-1; k++)
  16. {
  17. //边
  18. if (k==1 || k==2*i-1)
  19. {
  20. System.out.print("*");
  21. }
  22. else
  23. {
  24. System.out.print(" ");
  25. }
  26. }
  27. System.out.println();
  28. }
  29. //最底一行
  30. for (int i=0; i<21; i++)
  31. {
  32. System.out.print("*");
  33. }
  34. }
  35. }
复制代码
对应图形;  

sjx.png (2.14 KB, 下载次数: 244)

sjx.png

作者: 何伟    时间: 2012-11-29 16:11
{:soso_e102:}好东西了..................................
作者: 奋斗的青春    时间: 2012-11-29 16:21
打印回字形数字。{:soso_e117:}
  1. package com.itheima.打印图形;

  2. /**
  3. * java打印1-9 回 字 形 矩阵 非数组
  4. * 33333
  5. * 32223
  6. * 32123
  7. * 32223
  8. * 33333
  9. *
  10. *
  11. * @author 吴愿涛
  12. */
  13. public class 回字形矩阵_非数组 {
  14. public static void main(String[] args) {
  15. hui(3);// 打印回字型3的图形。
  16. }

  17. public static void hui(int a) {
  18. int c, m, n;// m为行数,n为列数,输出为M*N回字矩阵,c为行输出基准数
  19. c = a;
  20. for (m = 1; m <= 2 * a - 1; m++)// 行计数
  21. {
  22. for (n = 1; n <= 2 * a - 1; n++)// 列计数
  23. {
  24. if (n < a - c + 1) {
  25. System.out.print(a - n + 1);
  26. } else {
  27. if (n > a + c - 1) {
  28. System.out.print(n + 1 - a);
  29. } else {
  30. System.out.print(c);
  31. }
  32. }
  33. }
  34. // 行输出基准数c 作为数值大小的观察点
  35. System.out.println("");
  36. if (m < a) {
  37. c--;
  38. } else {
  39. c++;
  40. }
  41. }
  42. }
  43. }
复制代码
数组:
  1. package com.itheima.打印图形;
  2. import java.util.*;
  3. class 回字形矩阵_数组
  4. {
  5. public static void main(String [] args)
  6. {
  7. Scanner ss = new Scanner(System.in);
  8. int a = ss.nextInt();
  9. int [][] arr=new int [a+2][a+2];
  10. for(int i=0;i<arr.length;i++)
  11. {
  12. for(int j=0;j<arr[i].length;j++)
  13. {
  14. if(i==0||i==arr.length-1||j==0||j==(arr[i].length-1))
  15. arr[i][j]=a-2;
  16. else if (i==1||i==arr.length-2||j==1||j==(arr[i].length-2))
  17. arr[i][j]= a-1;
  18. else
  19. arr[i][j]= a;

  20. }
  21. }
  22. for(int i=0;i<arr.length;i++)
  23. {
  24. for(int j=0;j<arr[i].length;j++)
  25. {
  26. System.out.print(arr[i][j]);
  27. }
  28. System.out.println();
  29. }
  30. }
  31. }
复制代码

作者: 王震阳老师    时间: 2012-11-29 17:25
  1. //打印正弦函数
  2. class PrintDemo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int[][] num=new int[20][80];
  7.                 double y=0;
  8.                 double du=0.;
  9.                 for(int i=0;i<20;i++)
  10.                 {
  11.                         for(int k=0;k<80;k++)
  12.                         {
  13.                                 y=10*Math.sin(2*k*Math.PI/80.);
  14.                                 if(y>0)
  15.                                         num[i][k]=((y<=10-i)&&y>=(9-i))?(10-i):0;
  16.                                 if(y<=0)
  17.                                         num[i][k]=((y<=10-i)&&y>=(9-i))?(10-i):0;
  18.                         }
  19.                 }
  20.                 num[10][0]=1;
  21.                 num[10][40]=1;
  22.                 num[10][79]=1;
  23.                 for(int i=0;i<20;i++)
  24.                 {
  25.                         for(int k=0;k<80;k++)
  26.                         {
  27.                                 if(num[i][k]==0)
  28.                                  sop("-");
  29.                                 else
  30.                                         sop("*");

  31.                         }sop();
  32.                 }
  33.                
  34.         }
  35.         public static void sop(Object obj)//打印后换行
  36.         {
  37.                 System.out.print(obj);
  38.         }
  39.         public static void sop()//只打印不换行
  40.         {
  41.                 System.out.println();
  42.         }
  43. }
复制代码

打印正弦函数.jpg (113.72 KB, 下载次数: 194)

打印正弦函数.jpg

作者: 宫明星    时间: 2012-11-29 18:14
表示我收藏了,嘿嘿
作者: 王震阳老师    时间: 2012-11-29 19:19
  1. //打印马字
  2. class PrintMa
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int[][] num=new int[15][20];
  7.                 for(int i=0;i<15;i++)
  8.                 {
  9.                         for(int k=0;k<20;k++)
  10.                         {
  11.                                 num[i][k]=0;
  12.                         }
  13.                 }
  14.                 for(int i=0;i<5;i++)//第一笔
  15.                 {
  16.                         for(int k=3;k<13;k++)
  17.                         {
  18.                                 if(i==0||(k==12))
  19.                                 num[i][k]=1;
  20.                         }
  21.                 }
  22.                 for(int i=0;i<12;i++)//第二笔
  23.                 {
  24.                         for(int k=3;k<13;k++)
  25.                         {
  26.                                 if((k==3&&(i>1&&i<7))||(i==6)||(k==12&&i>6))
  27.                                         num[i][k]=1;
  28.                         }
  29.                 }
  30.                 for(int i=0;i<8;i++)
  31.                 {
  32.                         num[8][i+1]=1;
  33.                 }
  34.                 num[10][7]=1;
  35.                 for(int i=0;i<15;i++)
  36.                 {
  37.                         for(int k=0;k<20;k++)
  38.                         {
  39.                                 if(num[i][k]!=0)
  40.                                         sop("*");
  41.                                 else
  42.                                         sop(" ");
  43.                         }
  44.                         sop();
  45.                 }
  46.         }
  47.         public static void sop(Object obj)
  48.         {
  49.                 System.out.print(obj);
  50.         }
  51.         public static void sop()
  52.         {
  53.                 System.out.println();
  54.         }
  55. }
复制代码

打印马字.jpg (38.64 KB, 下载次数: 226)

打印马字.jpg

作者: 王震阳老师    时间: 2012-11-29 19:21
  1. /*
  2. 该程序的思想主要是基于三重循环的方法,
  3. 第一个循环控制二维图形的层数(比如参数是3,则一共有三层);
  4. 第二个循环
  5. */
  6. class MyAnswer
  7. {
  8.         public static void main(String[] args)
  9.         {

  10.         run(3);sop("\r\n");//为了验证正确性,循环测试了多次,多个数据
  11.         run(5);//测试结果
  12.                
  13.         }
  14.         public static void sop(Object obj)
  15.         {
  16.                 System.out.print(obj);
  17.         }
  18.         public static void print(int[][] num)//用于打印数组
  19.         {
  20.                 for(int i=0;i<num[0].length;i++)
  21.                 {
  22.                         for(int k=0;k<num[0].length;k++)
  23.                         {
  24.                                 sop(num[i][k]);
  25.                         }sop("\r\n");
  26.                 }
  27.         }
  28.         public static void run(int x)//用于给数组赋值,给函数为核心函数,主要功能由此产生
  29.         {
  30.                 int rows=x*2-1;//定义行数,由于图形是正方形的,因此行数和列数是一致的。
  31.                 int[][] num=new int[rows][rows];//定义一个二维数组
  32.                 for(int t=0;t<x;t++)//第一个循环:控制层数
  33.                 {
  34.                         sop("第"+(t+1)+"步:"+"\r\n");
  35.                         for(int i=t;i<rows-t;i++)//第二层循环:控制给指定数组要赋值的行数。先给每行数组赋值是相同的,然后通过第一个循环在一次缩小范围赋值
  36.                         {
  37.                                 for(int k=t;k<rows-t;k++)//第三层循环:给数组赋值
  38.                                 {
  39.                                         num[i][k]=t+1;
  40.                                 }
  41.                         }print(num);//打印给数组,为了更好地展示赋值的过程,在这里打印数组结果。
  42.                         sop("\r\n");
  43.                 }
  44.                 sop("您输入的参数为:"+x+"的结果已经打印完毕,并且在最后打印结果的上面显示了计算步骤。");
  45.         }
  46. }
复制代码

打印回字过程显示.jpg (39.55 KB, 下载次数: 298)

打印回字过程显示.jpg

作者: 王震阳老师    时间: 2012-11-29 20:12
  1. class PrintHei //打印黑字
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[][] num=new int[15][20];
  6.                 setValue(num,15,20);
  7.                 for(int i=0;i<5;i++)//第一笔
  8.                 {
  9.                         for(int k=1;k<15;k++)
  10.                         {
  11.                                 if(i==0||k==1||i==4||k==14)
  12.                                 num[i][k]=1;
  13.                                 if(k==7)
  14.                                         num[i][k]=1;
  15.                         }
  16.                 }
  17.                 num[5][7]=1;
  18.                 num[2][4]=1;
  19.                 num[2][10]=1;
  20.                 num[3][5]=1;
  21.                 num[3][9]=1;
  22.                 num[9][2]=1;num[10][1]=1;
  23.                 num[9][6]=1;num[10][7]=1;
  24.                 num[9][10]=1;num[10][11]=1;
  25.                 num[9][14]=1;num[10][15]=1;
  26.                 for(int i=6;i<9;i++)//第二笔
  27.                 {
  28.                         for(int k=0;k<16;k++)
  29.                         {
  30.                                 if(i==6&&(k>2&&k<13))
  31.                                         num[i][k]=1;
  32.                                 if(i==8)
  33.                                         num[i][k]=1;
  34.                                 if(k==7)
  35.                                         num[i][k]=1;
  36.                         }
  37.                 }
  38.                 show(num,15,20);
  39.         }
  40.         public static void setValue(int[][] num,int x,int y)//用于给数组赋值
  41.         {
  42.                 for(int i=0;i<x;i++)
  43.                 {
  44.                         for(int k=0;k<y;k++)
  45.                         {
  46.                                 num[i][k]=0;
  47.                         }
  48.                 }
  49.         }
  50.         public static void show(int[][] num,int x,int y)//打印出数组
  51.         {
  52.                 for(int i=0;i<x;i++)
  53.                 {
  54.                         for(int k=0;k<y;k++)
  55.                         {
  56.                                 if(num[i][k]!=0)
  57.                                         sop("*");
  58.                                 else
  59.                                         sop(" ");
  60.                         }
  61.                         sop();
  62.                 }
  63.         }
  64.         public static void sop(Object obj)
  65.         {
  66.                 System.out.print(obj);
  67.         }
  68.         public static void sop()
  69.         {
  70.                 System.out.println();
  71.         }
  72. }
复制代码

打印黑马.jpg (21.55 KB, 下载次数: 215)

打印黑马.jpg

作者: 王震阳老师    时间: 2012-11-29 20:13
王震阳 发表于 2012-11-29 20:12

呵呵,马字确实丑,这个黑字要稍微好看点啦。
作者: 黑马李勇    时间: 2012-11-29 20:24

  1. <P>/*
  2. 打印如下图形:
  3. 1  2  6  7
  4. 3  5  8 13
  5. 4  9 12 14
  6. 10 11 15 16
  7. */</P>
  8. <P>class Demo
  9. {
  10. public static void main(String[] args)
  11. {
  12.   int a = 10;
  13.   int num = 0;
  14.   int[][] arr = new int[15][15];</P>
  15. <P>  for(int i=0; i<a*2-1; i++)
  16.   {
  17.    for(int j=0; j<=i && j<a; j++)
  18.    {
  19.     for(int k=0; k<=i && k<a; k++)
  20.     {
  21.      if(j+k == i)
  22.      {
  23.       if(i%2 == 0)
  24.        arr[j][k] = ++num;
  25.       else
  26.        arr[k][j] = ++num;
  27.      }
  28.     }
  29.    }
  30.   }
  31.   
  32.   for(int i=0; i<a; i++)
  33.   {
  34.    for(int j=0; j<a; j++)
  35.    {
  36.     System.out.print(arr[i][j]+"\t");
  37.    }
  38.    System.out.println();
  39.   }
  40. }
  41. }
  42. </P>
复制代码
不知道这个- - 给不给加分,很早之前做的一个题目!

QQ截图20121129202402.jpg (25.85 KB, 下载次数: 231)

输出结果

输出结果

作者: 梁枝武    时间: 2012-11-29 22:49
你们搞搞 数字 字母LED 或者汉字点阵 出来看看
作者: 高志鹏    时间: 2012-11-30 12:27
本帖最后由 高志鹏 于 2012-11-30 12:29 编辑
  1. int[] c = new int[10];
  2.         for(int i=0;i<c.length;i++){
  3.             for(int j=0;j<i;j++){
  4.                 System.out.print(" ");               
  5.             }
  6.             for(int m=0;m<c.length;m++){
  7.                 System.out.print("*");
  8.             }   
  9.         System.out.println();
  10.         }
  11.         System.out.println();
复制代码
打印出来是一个平行四边形
**********
**********
  **********
   **********
    **********
     **********
      **********
       **********
        **********
         **********


作者: 梁胜海    时间: 2012-11-30 13:14
一句话,给力啊。群猪
作者: 侯光强    时间: 2012-12-5 01:31
  1. /**
  2.   * 画出字母V
  3.   * @param size:字母的大小
  4.   */
  5. private static void darwV(int size) {
  6.   size = size*4;
  7.   for (int i = 0; i <= size/2; i++) {
  8.    for (int j = 0; j < i; j++) {
  9.     System.out.print(" ");
  10.    }
  11.    for (int k = i; k <= size-i; k=k+2) {
  12.     if(k == i||k == size-i){
  13.      System.out.print("**");
  14.     }else{
  15.      System.out.print("  ");
  16.     }
  17.    }
  18.    System.out.println("");
  19.   }
  20. }
复制代码
-------字母V---------
**              **
**            **
  **          **
   **        **
    **      **
     **    **
      **  **
       ****
        **
-----------------------

作者: 侯光强    时间: 2012-12-5 01:34
  1.         /**
  2.          * 画出字母X
  3.          * @param size:字母的大小
  4.          */
  5.         private static void darwX(int size) {
  6.                 size = size*2;
  7.                 for (int i = 0; i <= size/2; i++) {
  8.                         for (int j = 0; j < i; j++) {
  9.                                 System.out.print(" ");
  10.                         }
  11.                         for (int k = i; k <= size-i; k=k+2) {
  12.                                 if(k == i||k == size-i){
  13.                                         System.out.print("**");
  14.                                 }else{
  15.                                         System.out.print("  ");
  16.                                 }
  17.                         }
  18.                         System.out.println("");
  19.                 }
  20.                 for (int i = 0; i < size/2; i++) {
  21.                         for (int j = 1; j < size/2-i; j++) {
  22.                                 System.out.print(" ");
  23.                         }
  24.                         for (int k = 0; k <= 2*(i+1); k=k+2) {
  25.                                 if(k == 0||k == 2*(i+1)){
  26.                                         System.out.print("**");
  27.                                 }else{
  28.                                         System.out.print("  ");
  29.                                 }
  30.                         }
  31.                         System.out.println("");
  32.                 }
  33.         }
复制代码
----字母X-------
**      **
**    **
  **  **
   ****
    **
   ****
  **  **
**    **
**      **
-----------

作者: 侯光强    时间: 2012-12-5 02:01
  1. /**
  2.          * 画出字母A
  3.          * @param size:字母的大小
  4.          */
  5.         private static void darwA(int size) {
  6.                 size = size*4;
  7.                 for (int i = 0; i < size/2; i++) {
  8.                         for (int j = 1; j < size/2-i; j++) {
  9.                                 System.out.print(" ");
  10.                         }
  11.                         if(i!=size/5&&i!=size/5-1){
  12.                                 for (int k = 0; k <= 2*(i+1); k=k+2) {
  13.                                         if(k == 0||k == 2*(i+1)){
  14.                                                 System.out.print("**");
  15.                                         }else{
  16.                                                 System.out.print("  ");
  17.                                         }
  18.                                 }
  19.                         }else{
  20.                                 for (int k = 0; k <= 2*(i+1); k=k+2) {
  21.                                         System.out.print("**");
  22.                                 }
  23.                         }
  24.                         
  25.                         System.out.println("");
  26.                 }
  27.         }
复制代码
****
                **  **
               **    **
              **      **
             **        **
            **          **
           **            **
          **              **
         *************
        **************
       **                    **
      **                      **
     **                        **
    **                          **
   **                            **
  **                              **
**                                **
**                                  **
作者: 魏亮    时间: 2012-12-5 09:35
这个必须顶,回头看
作者: 胡胜    时间: 2012-12-5 20:45
太吊了,看来我要加吧油
作者: 冰深    时间: 2012-12-6 14:50
我也来个吧~
  1. package cn.heima.main;

  2. import java.util.Scanner;

  3. public class PrintMatrix {

  4.         /**
  5.          * 根据参数Max来确定维数,维数为2*Max-1;根据图判断规律是以最大数为中心,向外逐层展开,逐层减小
  6.          * 直到减到1为止。该算法是核心就是获取获取任意元素的层数。我的算法就是以最大元素为中心坐标,获取每个元素坐标与之之差的的绝对值的最大值,
  7.          * 然后赋值给该数组,并打印数据。
  8.          *
  9.          * @author 滕达;
  10.          */
  11.         public static void main(String[] args) {
  12.                 //最大数字
  13.                 Scanner in = new Scanner(System.in);
  14.                 System.out.println("请输入层数:");
  15.                 int max=in.nextInt();
  16.                 System.out.println("图形如下:");
  17.                 //int max=5;
  18.                 //最大维数
  19.                 int div=2*max-1;
  20.                 //创建矩阵数组
  21.                 int Matrix[][]=new int[div][div];
  22.                 //x轴中位数,y轴中位数
  23.                 int point=(div-1)/2;
  24.                 for(int i=0;i<div;i++){
  25.                         for(int j=0;j<div;j++){
  26.                                 //判断层数,如果是第一层,则全部为1
  27.                                
  28.                                 Matrix[i][j]=max-Max(Math.abs(point-i),Math.abs(point-j));
  29.                                
  30.                                 System.out.print(Matrix[i][j]+" ");
  31.                                
  32.                         }
  33.                         System.out.println("");
  34.                        
  35.                 }
  36.                
  37.         }
  38.        
  39.         public static int Max(int i,int j){
  40.                 return i>j?i:j;
  41.         }

  42. }
复制代码
效果是:
请输入层数:
6
图形如下:
1 1 1 1 1 1 1 1 1 1 1
1 2 2 2 2 2 2 2 2 2 1
1 2 3 3 3 3 3 3 3 2 1
1 2 3 4 4 4 4 4 3 2 1
1 2 3 4 5 5 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 5 5 4 3 2 1
1 2 3 4 4 4 4 4 3 2 1
1 2 3 3 3 3 3 3 3 2 1
1 2 2 2 2 2 2 2 2 2 1
1 1 1 1 1 1 1 1 1 1 1


作者: 冰深    时间: 2012-12-6 14:52
再来一个会转弯的:
  1. package cn.itheima;

  2. public class DrawTheArr {

  3.         /**写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印:     
  4.          * 本实例成功完成!
  5.          * @author 冰深
  6.          */
  7.         public static void main(String[] args) {
  8.                 int div=6;
  9.                 int arr[][]=new int[div][div];
  10.                 //定义方向right 1,down 2, left 3, up 4
  11.                 draw(arr,div);
  12.                 printMap(arr,div);
  13.         }

  14.         private static void draw(int[][] arr, int div){
  15.                 int dir=1;
  16.                 int i=0,j=0;
  17.                 for(int t=0;t<div*div;t++){
  18.                         //给当前元素赋值
  19.                         arr[i][j]=t+1;
  20.                         System.out.println("------------\r\n元素值arr["+i+"]["+j+"]="+arr[i][j]+";方向:"+dir);
  21.                         //判断下个元素是否可用,如果不可用,那么就转向:元素角标越界或者下一个元素不为空
  22.                         boolean out=nextX(dir,j)>=div || nextX(dir,j)<0 || nextY(dir,i)>=div || nextY(dir,i)<0;
  23.                         if(out || arr[nextY(dir,i)][nextX(dir,j)]!=0){
  24.                                
  25.                                 if(!out)
  26.                                         System.out.println("拐弯原因是:arr["+nextX(dir,j)+"]["+nextY(dir,i)+"]"+arr[nextX(dir,j)][nextY(dir,i)]);
  27.                                 System.out.println("~~~~拐弯,转向了~!"+out);
  28.                                 dir=nextDir(dir);
  29.                         }
  30.                        
  31.                         //获取下一次的坐标
  32.                         j=nextX(dir, j);
  33.                         i=nextY(dir, i);
  34.                         System.out.print("下一个坐标arr["+i+"]["+j+"]\r\n------------\r\n");
  35.                 }
  36.                
  37.         }
  38.        
  39.        


  40.         //获取下一个方向
  41.         private static int nextDir(int dir) {
  42.                 switch (dir) {
  43.                 case 1:
  44.                         dir=2;
  45.                         break;
  46.                 case 2:
  47.                         dir=3;
  48.                         break;
  49.                 case 3:
  50.                         dir=4;
  51.                         break;
  52.                 case 4:
  53.                         dir=1;
  54.                         break;

  55.                 default:
  56.                         break;
  57.                 }
  58.                 return dir;
  59.         }

  60.         //获取下一个x坐标
  61.         private static int nextX(int dir, int x) {
  62.                 switch (dir) {
  63.                 case 1:
  64.                         x++;
  65.                         break;
  66.                 case 3:
  67.                         x--;
  68.                         break;
  69.                
  70.                 default:
  71.                         break;
  72.                 }
  73.                 return x;
  74.         }
  75.        
  76.         //获取下一个Y坐标
  77.         private static int nextY(int dir,int y) {
  78.                 switch (dir) {
  79.                
  80.                 case 2:
  81.                         y++;
  82.                         break;
  83.                
  84.                 case 4:
  85.                         y--;
  86.                         break;

  87.                 default:
  88.                         break;
  89.                 }
  90.                 return y;
  91.         }

  92.         //打印数组
  93.         private static void printMap(int[][] arr, int div) {
  94.                 for(int i=0;i<div;i++){
  95.                         for(int j=0;j<div;j++){
  96.                                 System.out.print(arr[i][j]+"\t");
  97.                         }
  98.                         System.out.println();
  99.                 }
  100.         }

  101. }
复制代码
效果如下:

1        2        3        4        5        6       
20        21        22        23        24        7       
19        32        33        34        25        8       
18        31        36        35        26        9       
17        30        29        28        27        10       
16        15        14        13        12        11       


作者: madianguo    时间: 2012-12-6 14:53
  1. public class PrintTriangle {
  2.    
  3.     public static void main(String[] args) {
  4.         System.out.println("======左边正三角形======");
  5.         printTopLeft(5);
  6.         System.out.println("======左边倒三角形======");
  7.         printDownLeft(5);
  8.         System.out.println("======打印右正三角形======");
  9.         printTopRight(5);
  10.         System.out.println("======打印右倒三角形======");
  11.         printDownRight(5);
  12.         System.out.println("======打印正中三角形======");
  13.         printTopCenter(5);
  14.         System.out.println("======打印倒中三角形======");
  15.         printDownCenter(5);
  16.         System.out.println("======打印中正空三角形======");
  17.         printTopMidBlank(5);
  18.         System.out.println("======打印中倒空三角形======");
  19.         printDownMidBlank(5);
  20.         System.out.println("======打印正人字状======");
  21.         printTopRen(5);

  22.     }
  23.     /**//*
  24.      * 打印正人字状
  25.      */
  26.     public static void printTopRen(int n){
  27.         for(int i = 1; i <= n; i ++){
  28.             for(int j = i; j < n; j ++){
  29.                 System.out.print("   ");
  30.             }
  31.             //左半部分
  32.             for(int j = 1; j <= i; j++){
  33.                 if(j == 1)
  34.                     System.out.print(" * ");
  35.                 else
  36.                     System.out.print("   ");
  37.             }
  38.             //右半部分
  39.             for(int j = 1; j < i; j++){
  40.                 if(j == i - 1)
  41.                     System.out.print(" * ");
  42.                 else
  43.                     System.out.print("   ");
  44.             }
  45.             System.out.println();
  46.         }
  47.     }
  48.     /**//*
  49.      * 打印倒空三角形
  50.      */
  51.     public static void printDownMidBlank(int n){
  52.         for(int i = 1; i <= n; i ++){
  53.             for(int j = 1; j < i; j ++){
  54.                 System.out.print("   ");
  55.             }
  56.             for(int j = i; j <= n; j ++){
  57.                 if(i == 1 || j == i|| i == n)
  58.                     System.out.print(" * ");
  59.                 else
  60.                     System.out.print("   ");
  61.             }
  62.             for(int j = i; j < n; j ++){
  63.                 if(i == 1 || j == n - 1)
  64.                     System.out.print(" * ");
  65.                 else
  66.                     System.out.print("   ");
  67.             }
  68.             System.out.println();
  69.         }
  70.     }
  71.     /**//*
  72.      * 打印中正空三角形
  73.      */
  74.     public static void printTopMidBlank(int n){
  75.         for(int i = 1; i <= n; i ++){
  76.             for(int j = i; j < n; j ++){
  77.                 System.out.print("   ");
  78.             }
  79.             //左半部分
  80.             for(int j = 1; j <= i; j++){
  81.                 if(j == 1 || i == n)
  82.                     System.out.print(" * ");
  83.                 else
  84.                     System.out.print("   ");
  85.             }
  86.             //右半部分
  87.             for(int j = 1; j < i; j++){
  88.                 if(j == i - 1 || i == n)
  89.                     System.out.print(" * ");
  90.                 else
  91.                     System.out.print("   ");
  92.             }
  93.             System.out.println();
  94.         }
  95.     }
  96.     /**//*
  97.      * 打印倒中三角形
  98.      */
  99.     public static void printDownCenter(int n){
  100.         for(int i = 1; i <= n; i ++){
  101.             for(int j = 1; j < i; j ++){
  102.                 System.out.print("   ");
  103.             }
  104.             for(int j = i; j <= n; j ++){
  105.                 System.out.print(" * ");
  106.             }
  107.             for(int j = i; j < n; j ++){
  108.                 System.out.print(" * ");
  109.             }
  110.             System.out.println();
  111.         }
  112.     }
  113.     /**//*
  114.      * 打印正中三角形
  115.      */
  116.     public static void printTopCenter(int n){
  117.         for(int i = 1; i <= n; i ++){
  118.             for(int j = i; j < n; j ++){
  119.                 System.out.print("   ");
  120.             }
  121.             //左半部分
  122.             for(int j = 1; j <= i; j++){
  123.                 System.out.print(" * ");
  124.             }
  125.             //右半部分
  126.             for(int j = 1; j < i; j++){
  127.                 System.out.print(" * ");
  128.             }
  129.             System.out.println();
  130.         }
  131.     }
  132.     /**//*
  133.      * 打印右倒三角形
  134.      */
  135.     public static void printDownRight(int n){
  136.         for(int i = n; i >= 1; i --){
  137.             for(int j = n; j > i; j --){
  138.                 System.out.print("   ");
  139.             }
  140.             for(int j = i; j >= 1; j --){
  141.                 System.out.print(" * ");
  142.             }
  143.             System.out.println();
  144.         }
  145.     }
  146.     /**//*
  147.      * 打印右正三角形
  148.      */
  149.     public static void printTopRight(int n){
  150.         for(int i = 1; i <= n; i ++){
  151.             for(int j = n; j > i; j --){
  152.                 System.out.print("   ");
  153.             }
  154.             for(int j = i; j >= 1; j--){
  155.                 System.out.print(" * ");
  156.             }
  157.             System.out.println();
  158.         }
  159.     }
  160.     /**//*
  161.      * 打印左正三角型
  162.      */
  163.     public static void printTopLeft(int n){
  164.         for(int i = 1; i <= n; i ++){
  165.             for(int j = 1; j <= i; j ++){
  166.                 System.out.print(" * ");
  167.             }
  168.             System.out.println();
  169.         }
  170.     }
  171.     /**//*
  172.      * 打印左倒三角形
  173.      */
  174.     public static void printDownLeft(int n){
  175.         for(int i = 1; i <= n; i ++){
  176.             for(int j = n; j >= i; j --){
  177.                 System.out.print(" * ");
  178.             }
  179.             System.out.println();
  180.         }
  181.     }
  182. }
复制代码

无标题.gif (20.54 KB, 下载次数: 137)

无标题.gif

作者: 李桐    时间: 2012-12-6 15:25
        圆形的

public static void main(String[] args) {
                  int r = 25;
                  for (int y = 0; y <= 2 * r; y += 2) {
                   long x = Math.round(r - Math.sqrt(2 * r * y - y * y));
                   long longLength = 2 * (r - x);

                   for (int i = 0; i <= x; i++) {
                    System.out.print(" ");
                   }
                   System.out.print("*");

                   for (int j = 0; j <= longLength; j++) {
                    System.out.print(" ");
                   }
                   System.out.println("*");
                  }
                 }



作者: 王斌    时间: 2012-12-6 17:25
package training;

public class BendLine {
       
    static char[][] ch=new char[20][20];
    static int length=ch.length-1;
    public static void main(String[] args)
    {
            int x,y;        
            for(x=0;x<length+1;x++)//初始化字符数组
                    for(y=0;y<length+1;y++)
                    ch[x][y]=' ';
            x=y=length;
            int count=0;
            while(count<(length+1)/2)
            {
                    if(count%2==1)
                    area(x,y,'*');
                    else
                    area(x,y,' ');
                    
                    x--;
                    y--;
                    count++;
                    
            }
           
            for(x=0;x<length+1;x++)
            {
                    System.out.print(ch[x]);
                    System.out.println("");
            }
           
    }
    static void area(int x,int y,char c)
    {        
            int i=length-x;
            int j=length-y;
            int n=0;
            int k=1;
            while(n<4)
            {        
                    if(n==0 && i<x)//n==0指左边
                            ch[i++][j]=c;
                    else if(n==0)
                    {n++;i=x;}

                    if(n==1 && j<y)//n==1指下边
                            ch[i][j++]=c;
                    else if(n==1)
                    {n++;j=y;}

                    if(n==2 && i>length-x)//n==2指右边
                            ch[i--][j]=c;
                    else if(n==2)
                    {n++;j=x;}
                    if(n==3 && j>length-x)//n==3指上边
                            ch[i][j--]=c;
                    else if(n==3)
                    {n++;}

            }//while
            if(ch[length-x+1][y]=='*')
                    ch[length-x+1][y]=' ';
            else
                    ch[length-x+1][y]='*';                        
    }

}


很靠谱的   图像是个回
*******************
*                  
* ****************
* *              *
* * ************ *
* * *          * *
* * * ******** * *
* * * *      * * *
* * * * **** * * *
* * * * *  * * * *
* * * *    * * * *
* * * ****** * * *
* * *        * * *
* * ********** * *
* *            * *
* ************** *
*                *
******************
                    

作者: 戴进飘    时间: 2012-12-8 14:05
哈哈,超搞笑的一个心形


     **        **
    *  *      *  *
   *    *    *    *
  *      *  *      *
*        **        *
*                    *
*                    *
*                    *
*                  *
  *                *
   *              *
    *            *
     *          *
      *        *
       *      *
        *    *
         *  *
          *
  1. public class Test2 {
  2.         private static String str = " ";
  3.         private static String str1 = "*";

  4.         /**
  5.          * 又*号打印出一个心形
  6.          */
  7.         public static void main(String[] args) {
  8.                 method();
  9.         }

  10.         public static void method() {
  11.                
  12.                 int z = 2;
  13.                 int n = 10;
  14.                 for (int i = 5; i > 0; i--) {
  15.                         if (i == 5) {
  16.                                 System.out.println(method1(i) + str1 + str1 + method1(n - 2) + str1 + str1);
  17.                         } else {
  18.                                 System.out.println(method1(i) + str1 + method1(z) + str1  + method1(n - z - 2) + str1 + method1(z) + str1);
  19.                                 z = z + 2;
  20.                         }
  21.                 }
  22.                 System.out.println(str1 + method1(n * 2) + str1);
  23.                 System.out.println(str1 + method1(n * 2) + str1);
  24.                 for (int i = 0; i <= 10; i++) {
  25.                         if (i == 10) {
  26.                                 System.out.println(method1(i) + str1);
  27.                         } else {
  28.                                 System.out.println(method1(i) + str1 + method1(20 - 2*i) + str1);
  29.                         }
  30.                 }
  31.         }
  32.         public static String method1(int m){
  33.                 StringBuffer sb = new StringBuffer();
  34.                 for (int i = 0; i < m; i++) {
  35.                         sb.append(str);
  36.                 }
  37.                 return sb.toString();
  38.         }
  39. }
复制代码

作者: 李志杰    时间: 2013-4-9 21:02
呵呵,不错啊啊啊
作者: 花心々小土豆    时间: 2013-5-7 13:43
本帖最后由 花心々小土豆 于 2013-5-7 13:48 编辑
冰深 发表于 2012-12-6 14:52
再来一个会转弯的:效果如下:

1        2        3        4        5        6        
  1. /**
  2.         循环转圈打印一个二维数组,格式如下:
  3.         1                 2                 3                 4                  5                6

  4.         20                21                22                23                24                7

  5.         19                32                33                34                25                8

  6.         18                31                36                35                26                9
  7.         
  8.         17                30                29                28                27                10

  9.         16                15                14                13                12                11

  10.         思路:观察上面数组可知,由外往内看,每一圈数字都是按顺时针递增的,我们可以定义一个适合大小的数组,按照这种顺时针的方式给数组里的每个元素赋值,最后将这个数组打印即可。

  11.         @author 小土豆
  12. */
  13. class  xunhuandayin
  14. {
  15.         public static void main(String[] args)
  16.         {
  17.                 int n=6;                        //可以通过改变n的值来控制输出的二维数组
  18.                 int arr[][] =new int[n][n];
  19.                
  20.                 show(arr,n);
  21.                 print(arr,n);
  22.         }
  23.         public static void show(int[][]arr,int n)
  24.         {
  25.                 int x,y,k=0,s=1;
  26.                 while(n>0)                        //下面四个for语句控制一圈数字
  27.                 {
  28.                         for(x=k,y=k;y<n;y++)                //从左到右
  29.                                 arr[x][y]=s++;
  30.                         for(x=k+1,y=n-1;x<n;x++)        //从上到下
  31.                                 arr[x][y]=s++;
  32.                         for(x=n-1,y=n-2;y>=k;y--)        //从右到左
  33.                                 arr[x][y]=s++;
  34.                         for(x=n-2,y=k;x>k;x--)                //从下到上
  35.                                 arr[x][y]=s++;
  36.                         n=n-1;                                        //进入内层圈中
  37.                         k=k+1;
  38.                 }
  39.         }
  40.         public static void print(int[][] arr,int n)
  41.         {
  42.                 for(int i=0;i<n;i++)
  43.                 {        
  44.                         for(int j=0;j<n;j++)
  45.                                 System.out.print(arr[i][j]+"\t");
  46.                         System.out.println();
  47.                         System.out.println();
  48.                 }
  49.         }
  50. }
复制代码
这个我以前做过,贴出来一起分享下:handshake

未命名.jpg (9.51 KB, 下载次数: 0)

未命名.jpg

作者: 花心々小土豆    时间: 2013-5-7 14:12
本帖最后由 花心々小土豆 于 2013-5-7 14:16 编辑
黑马李勇 发表于 2012-11-29 20:24
不知道这个- - 给不给加分,很早之前做的一个题目!
  1. /**
  2.         打印如下格式:
  3.         1        3        4        10        11

  4.         2        5        9        12

  5.         6        8        13

  6.         7        14

  7.         15

  8.         @author 小土豆
  9. */

  10. class  NumDemo
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 int        num=8;                //改变num的值得到想要的输出效果
  15.                 int arr[][]=new int[num][num];

  16.                 show(arr,num);
  17.                 print(arr,num);
  18.         }
  19.         public static void show(int[][] arr,int num)
  20.         {
  21.                 int k,l,m,n,s=1;
  22.                 for(int i=0, j=1;i<num;i+=2,j+=2)
  23.                 {
  24.                         for(k=0;k<j;k++)
  25.                                 for(l=i;l>=0;l--)
  26.                                         if(l+k==i)
  27.                                                 arr[k][l]=s++;
  28.                         for(m=j;m>=0;m--)
  29.                                 for(n=0;n<=i+1;n++)
  30.                                         if(m+n==j)
  31.                                                 arr[m][n]=s++;
  32.                 }
  33.         }
  34.         public static void print(int[][] arr,int num)
  35.         {
  36.                 for(int i=0;i<num;i++)
  37.                 {        
  38.                         for(int j=0;j<num;j++)
  39.                                 if(i+j<num)
  40.                                         System.out.print(arr[i][j]+"\t");
  41.                         System.out.println();
  42.                         System.out.println();
  43.                         System.out.println();
  44.                 }
  45.         }
  46. }
复制代码
我做过的类似的!按照下面图片中的黄色线想,规律很好看出。

NumDemo.jpg (41.4 KB, 下载次数: 0)

NumDemo.jpg

作者: 咪啪    时间: 2014-6-7 14:06
好东西,mark
作者: cxj    时间: 2014-12-3 12:25
很好的东西,学习中
作者: 李贵栋    时间: 2014-12-22 09:49
各种表演啊   哈哈
作者: zxj35986847    时间: 2015-3-11 03:54
:L不简单啊。谁打个面具出来我瞧瞧呗?
作者: danlyalex    时间: 2015-3-24 14:27
我已经头晕了。本来学了个输出三角形就觉得很厉害。居然还有这么麻烦的图案。头转不过来
作者: 胡胜    时间: 2015-9-20 18:03
太顶尖桂花工




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