黑马程序员技术交流社区

标题: for循环的练习题-打印图形 [打印本页]

作者: 一枚小小媛    时间: 2015-8-1 12:47
标题: for循环的练习题-打印图形
本帖最后由 一枚小小媛 于 2015-8-1 12:52 编辑
  1. package test_for;

  2. /**
  3. * @author 小媛
  4. *  根据需求,打印各种奇葩图形
  5. * 思路:
  6. * ①双重for循环
  7. * ②外层循环控制有多少行,内层循环控制每行有多少个
  8. * ③操作for循环的条件 达到需要的目的
  9. */
  10. public class GraphPrint {
  11.         public static void main(String[] args) {
  12.                
  13.                
  14.         }

  15.         /**
  16.          * 打印常规三角形
  17.          * size 表示行数

  18.         ●
  19.         ●●
  20.         ●●●
  21.         ●●●●
  22.         ●●●●●
  23.         
  24.          */
  25.         private static void printTriangle(int size) {
  26.                 for (int i = 1; i <= size; i++) {
  27.                         for (int j = 1; j <= i; j++) {
  28.                                 System.out.print("●");
  29.                         }
  30.                         System.out.println();
  31.                 }
  32.         }

  33.         /**
  34.          * 打印常规倒三角
  35.          * size 表示行数        
  36.          
  37.         ●●●●●
  38.         ●●●●
  39.         ●●●
  40.         ●●
  41.         ●
  42.          
  43.          */
  44.         private static void printTriangle2(int size) {
  45.                 for (int i = size; i >= 1; i--) {
  46.                         for (int j = 1; j <= i; j++) {
  47.                                 System.out.print("●");
  48.                         }
  49.                         System.out.println();
  50.                 }
  51.         }

  52.         /**
  53.          * 打印等腰三角形
  54.          * size 表示行数
  55.         
  56.             ●
  57.            ●●
  58.           ●●●
  59.          ●●●●
  60.         ●●●●●

  61.          */
  62.         private static void printTriangle3(int size) {

  63.                 for (int i = 1; i <= size; i++) {

  64.                         for (int j = size; j > i; j--) {
  65.                                 System.out.print(" ");
  66.                         }

  67.                         for (int j = 1; j <= i; j++) {
  68.                                 System.out.print("●");
  69.                         }
  70.                         System.out.println();
  71.                 }
  72.         }

  73.         /**
  74.          * 打印 空心&等腰  三角形
  75.          * size 表示行数

  76.             ●
  77.            ●●
  78.           ●  ●
  79.          ●    ●
  80.         ●●●●●

  81.          */
  82.         private static void printTriangle4(int size) {

  83.                 for (int i = 1; i <= size; i++) {

  84.                         for (int j = size; j > i; j--) {
  85.                                 System.out.print(" ");// 单空格
  86.                         }

  87.                         for (int j = 1; j <= i; j++) {
  88.                                 if (i == 1 || i == size || j == 1 || j == i) {
  89.                                         System.out.print("●");
  90.                                 } else {
  91.                                         System.out.print("  ");// 双空格
  92.                                 }
  93.                         }
  94.                         System.out.println();
  95.                 }
  96.         }

  97.         /**
  98.          * 打印棱形
  99.          * size 表示行数
  100.                
  101.                
  102.             ●
  103.            ●●
  104.           ●●●
  105.          ●●●●
  106.         ●●●●●
  107.          ●●●●
  108.           ●●●
  109.            ●●
  110.             ●

  111.          */
  112.         private static void printPrismatic(int size) {

  113.                 for (int i = 1; i <= size; i++) {
  114.                         for (int j = size; j > i; j--) {
  115.                                 System.out.print(" ");// 单空格
  116.                         }

  117.                         for (int j = 1; j <= i; j++) {
  118.                                 System.out.print("●");
  119.                         }
  120.                         System.out.println();
  121.                 }

  122.                 for (int i = size - 1; i >= 1; i--) {
  123.                         for (int j = size - 1; j >= i; j--) {
  124.                                 System.out.print(" ");// 单空格
  125.                         }
  126.                         for (int j = 1; j <= i; j++) {
  127.                                 System.out.print("●");
  128.                         }
  129.                         System.out.println();
  130.                 }
  131.         }

  132.         /**
  133.          * 打印空心棱形
  134.          * size 表示行数
  135.         
  136.         
  137.             ●
  138.            ●●
  139.           ●  ●
  140.          ●    ●
  141.         ●      ●
  142.          ●    ●
  143.           ●  ●
  144.            ●●
  145.             ●

  146.          */
  147.         private static void printPrismatic2(int size) {

  148.                 for (int i = 1; i <= size; i++) {
  149.                         for (int j = size; j > i; j--) {
  150.                                 System.out.print(" ");// 单空格
  151.                         }

  152.                         for (int j = 1; j <= i; j++) {
  153.                                 if (i == 1 || j == 1 || j == i) {
  154.                                         System.out.print("●");
  155.                                 } else {
  156.                                         System.out.print("  ");
  157.                                 }
  158.                         }
  159.                         System.out.println();
  160.                 }

  161.                 for (int i = size - 1; i >= 1; i--) {
  162.                         for (int j = size - 1; j >= i; j--) {
  163.                                 System.out.print(" ");// 单空格
  164.                         }
  165.                         for (int j = 1; j <= i; j++) {
  166.                                 if (i == 1 || i == size || j == 1 || j == i) {
  167.                                         System.out.print("●");
  168.                                 } else {
  169.                                         System.out.print("  ");
  170.                                 }
  171.                         }
  172.                         System.out.println();
  173.                 }
  174.         }

  175.         /**
  176.          * 打印等腰梯形
  177.          * size 表示行数
  178.          * upWidth 表示梯形上边长

  179.             ●●●●●
  180.            ●●●●●●
  181.           ●●●●●●●
  182.          ●●●●●●●●
  183.         ●●●●●●●●●
  184.                         
  185.          */
  186.         private static void printTrapezium(int upWidth, int size) {
  187.                 for (int i = 1; i <= size; i++) {

  188.                         for (int j = size; j > i; j--) {
  189.                                 System.out.print(" ");
  190.                         }

  191.                         for (int j = 1; j <= i + upWidth - 1; j++) {
  192.                                 System.out.print("●");
  193.                         }
  194.                         System.out.println();
  195.                 }
  196.         }

  197.         /**
  198.          * 打印空心等腰梯形
  199.          * size 表示行数
  200.          * upWidth 表示梯形上边长
  201.                
  202.             ●●●●●
  203.            ●         ●
  204.           ●           ●
  205.          ●             ●
  206.         ●●●●●●●●●

  207.          */
  208.         private static void printTrapezium2(int upWidth, int size) {

  209.                 for (int i = 1; i <= size; i++) {

  210.                         for (int j = size; j > i; j--) {
  211.                                 System.out.print(" ");// 单空格
  212.                         }

  213.                         for (int j = 1; j <= i + upWidth - 1; j++) {        //+ upWidth表示多打印upWidth个圆点; -1 是除去第一个,避免重复
  214.                                 if (i == 1 || i == size || j == 1 || j == i + upWidth - 1) {
  215.                                         System.out.print("●");
  216.                                 } else {
  217.                                         System.out.print("  ");// 双空格
  218.                                 }
  219.                         }
  220.                         System.out.println();
  221.                 }
  222.         }

  223. }
复制代码



作者: 一枚小小媛    时间: 2015-8-1 12:51
不好意思了,图形的例图,本来在代码工具里面是好的。结果放进来之后 有点乱了。
将就的看吧,然后你们自己补脑··可以复制代码运行一下,在控制台打印一下
作者: 一枚小小媛    时间: 2015-8-1 12:54
还是直接上图吧。方便大家参考

無名の QQ スクリーンショット20150801135226.png (1.79 KB, 下载次数: 23)

無名の QQ スクリーンショット20150801135226.png

無名の QQ スクリーンショット20150801135237.png (1.56 KB, 下载次数: 30)

無名の QQ スクリーンショット20150801135237.png

無名の QQ スクリーンショット20150801135244.png (1.65 KB, 下载次数: 28)

無名の QQ スクリーンショット20150801135244.png

無名の QQ スクリーンショット20150801135252.png (1.91 KB, 下载次数: 16)

無名の QQ スクリーンショット20150801135252.png

無名の QQ スクリーンショット20150801135259.png (1.8 KB, 下载次数: 13)

無名の QQ スクリーンショット20150801135259.png

無名の QQ スクリーンショット20150801135307.png (1.87 KB, 下载次数: 28)

無名の QQ スクリーンショット20150801135307.png

無名の QQ スクリーンショット20150801135314.png (2.58 KB, 下载次数: 28)

無名の QQ スクリーンショット20150801135314.png

無名の QQ スクリーンショット20150801135320.png (2.6 KB, 下载次数: 19)

無名の QQ スクリーンショット20150801135320.png

作者: 一枚小小媛    时间: 2015-8-1 12:56
基本上这几个图形都是一个思路,改动的地方也是循序渐进。
纯属抛砖引玉。
(づ。◕‿‿◕。)づ
除了我写的方式,肯定还有其它的方式的。大家可以交流一下

作者: bgxpf    时间: 2015-8-1 13:21
确实不错,看看再收藏下
作者: 小小豪    时间: 2015-8-1 13:37
看看。看看。。
作者: 一枚小小媛    时间: 2015-8-1 22:43
纠正一下。打印棱形的时候,输入的行数计算有误,忘了那个是三角形 行数了- -
应该加入一句代码才比较符合。更正如下
  1. /**
  2.          * 打印棱形 size 表示行数
  3.          */
  4.         private static void printPrismatic(int size) {

  5.                 int newSize = (size + 1) / 2;

  6.                 for (int i = 1; i <= newSize; i++) {
  7.                         for (int j = newSize; j > i; j--) {
  8.                                 System.out.print(" ");// 单空格
  9.                         }

  10.                         for (int j = 1; j <= i; j++) {
  11.                                 System.out.print("●");
  12.                         }
  13.                         System.out.println();
  14.                 }

  15.                 for (int i = newSize - 1; i >= 1; i--) {
  16.                         for (int j = newSize - 1; j >= i; j--) {
  17.                                 System.out.print(" ");// 单空格
  18.                         }
  19.                         for (int j = 1; j <= i; j++) {
  20.                                 System.out.print("●");
  21.                         }
  22.                         System.out.println();
  23.                 }
  24.         }
复制代码

作者: HOTSUMMER    时间: 2015-8-1 22:55
好吧  会打正倒三角就好了
作者: Hider    时间: 2015-8-1 22:58
按照老师的话来说。。你打个❤出来也并没有什么卵用。。
作者: A-comed_eMCn5    时间: 2015-8-1 23:43
厉害,攒攒
作者: Wqi    时间: 2015-8-1 23:48
谢谢lz,提够了几个模型。明天玩玩看。
作者: 刘远东    时间: 2015-8-2 06:47
写的不错默默的收藏了. 欢迎继续发技术贴.




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