问题描述

在Java学习当中,当我们熟练掌握了关于for循环的基础之后,就可以利用其来实现一个图形的打印,主要是利用“*”符号或者其他符号来进行图形的一个拼合,来呈现出一个完整图形样式。

解决方案

首先需要清楚,如果使用“*”符号来呈现一个图形,要呈现一个矩形样式,则直接打印i×j个“*”号即可;若需要打印三角形,则需要注意,有些部分需要以空格的形式打印输出;同理,也可以打印出圆形、心形或其他不规则图形。

需要注意的小技巧是,在Java当中,打印用System.out.println()会换行,用System.out.print()则不会换行,接下来进行几个简单的编程演示吧。

1、矩形

矩形打印需要用一个嵌套for循环来实现图形的长宽打印。外层for循环控制行数,内层for循环控制列数。其中小技巧是,打印时在内层不进行换行,外层进行换行。

public class juxing {

     public static void main(String[] args) {

         for(int j = 0;j < 5;j++){        //行数5

            for(int i = 0;i < 5;i++){   //列数5

                 System.out.print("*");

            }

            System.out.println();

         }

     }

}

Java|实现图形打印_经验分享

图2.1 矩形打印结果

2、三角形

三角形打印同样需要嵌套for循环,这里需要由空格来替换掉部分“*”号,因此在内层需要两个for循环来实现替换。这里若要实现正三角形,则可以用一个小技巧“* ”占两个字节。

public class triangle {

public static void main(String[] args) {

         for (int i = 0; i < 5; i++) {

            for (int j = 0; j < 5-i; j++)  {

                System.out.print("  ");

            }

            for (int k = 0; k < i; k++) {

                System.out.print("*  ");

            }

            System.out.println();

         }

     }

}

 

Java|实现图形打印_经验分享_02

图2.2 三角形打印结果

3、圆形

打印圆形必须要用到Java中的Math方法,其中Math.sqrt()计算平方根,Math.round()四舍五入取整。首先定义一个变量为圆形的半径r并赋值,可知圆心坐标为(r,r),勾股定理可知圆y = r -√(2*r*x-x*x)。

public class circle {

         //心形

         int r=10; 

 

         for (int y = 0; y <= 2 * r; y += 2) {

            int x = (int)Math.round(r -  Math.sqrt(2 * r * y - y * y));

            int len = 2 * (r - x);

 

            for (int i = 0; i <= x; i++) {

                System.out.print(' ');

            }

            System.out.print('*');

 

            for (int j = 0; j <= len; j++)  {

                System.out.print('*');

            }

            System.out.println('*');

 

         }

     }

}

Java|实现图形打印_经验分享_03

图2.3 圆形打印结果

结语

以上图形只是一些常见的基础图形打印,其实这里发散一下思维,可以打印任何自己想要呈现的图形,比如上次网络上很火的打印国旗图案,其实也能够在对图形进行简单构思后确定好点位打印出来。掌握了基础方法后,至于要去实现什么结果,因人而异,需要每个人的想象力。