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