【Java编程】打印图形

来源:互联网 发布:mac os x 常用软件 编辑:程序博客网 时间:2024/04/30 11:02

定义一个类 Draw ,在 类 中 提供 3 个 方法:输出直角三角形(drawTrian()) 、 输出矩形(drawRec()) 及平行四边形(drawPra()) 。通过方法可以输出由“*” 组成的一个图形。 同时在类中包含两个属性:星号的个数(count) 、行数(lines) 。最后在测试类中进行调用。

在写代码之前首先来说一下基本:

矩形:怎么打印一个矩形?比如我们要打印一个4行5列的矩形:首先我们要控制行数和列数,使用for循环的嵌套循环完成,外层循环控制行数,内层循环控制列数。

代码如下:

public class Test {public static void main(String[] args) {// 打印一个4行5列的矩形// 外层循环打行for (int i = 1; i <= 4; i++) {// 内层循环打列for (int j = 1; j <= 5; j++) {// 每循环一次打一个*System.out.print("*");// 注意此处不换行,每次打到一行上面}// 每打完一行就换行System.out.println();}}}



平行四边形:通过以上的矩形打印,是否对平行四边形有了一些想法?平行四边形和矩形一样都是外大行,内打列。


通过这个图是否看出了规律

代码如下:

public class Test {public static void main(String[] args) {// 打印一个4行5列的平行四边形// 外层循环打行for (int i = 1; i <= 4; i++) {// 打空格for (int k = 1; k < i; k++) {System.out.print(" ");// 注意此处输出不换行}// 内层循环打列for (int j = 1; j <= 5; j++) {// 每循环一次打一个*System.out.print("*");// 注意此处不换行,每次打到一行上面}// 每打完一行就换行System.out.println();}}}


三角形:看图分析


根据上图分析,我们可以找出一个规律,空格的个数等于总行数减当前行。

代码如下:

public class Test {public static void main(String[] args) {// 打印一个4行的三角形// 外层循环打行for (int i = 1; i <= 4; i++) {// 打空格for (int k = 1; k <=4-i; k++) {System.out.print(" ");// 注意此处输出不换行}// 内层循环打列for (int j = 1; j <= i*2-1; j++) {// 每循环一次打一个*System.out.print("*");// 注意此处不换行,每次打到一行上面}// 每打完一行就换行System.out.println();}}}



到处局部分析已经完毕,下面进入我么的题目要求:

按照题目我们需要输入两个参数,一个是星星的个数,另一个是行数,那么我们经过上面的基本分析已经知道了原理,我们是否可以根据星星的个数和行数来求列数,得到行数和列数是不是有回到了上面的代码中。

代码如下:

public class Deaw {int count;int lines;// 一个有参的构造方法,在new对象的时候指定星数和行数public Deaw(int count, int lines) {this.count = count;this.lines = lines;}// 三角形public void drawTrian() {int h = 0;a: for (int i = 1; i <= lines; i++) {// 打空格for (int k = 1; k <= lines - i; k++) {System.out.print(" ");}// 打印五个星星for (int j = 1; j <= 2 * i - 1; j++) {System.out.print("*");h++;// 星星打完了,停止打印if (h == count) {break a;}}// 行数打够了但是星星每打完,继续打星星/*if (i == lines && h != count) {for (int k = 1; k <= count - h; k++) {System.out.print("*");}}*/// 每打印五个星就换行System.out.println();}}// 矩形public void drawRec() {int lie = count / lines;int h = 0;a: for (int i = 1; i <= lines; i++) {for (int j = 1; j <= lie; j++) {System.out.print("*");h++;//星星打完了,停止打印if (h == count) {break a;}}// 行数打够了但是星星每打完,继续打星星/*if (i == lines && h != count) {for (int k = 1; k <= count - h; k++) {System.out.print("*");}}*/System.out.println();}}// 平行四边形public void drawPra() {int lie = count / lines;int h = 0;a: for (int i = 1; i <= lines; i++) {for (int k = 1; k < i; k++) {System.out.print(" ");}for (int j = 1; j <= lie; j++) {System.out.print("*");h++;// 星星打完了,停止打印if (h == count) {break a;}}// 行数打够了但是星星每打完,继续打星星/*if (i == lines && h != count) {for (int k = 1; k <= count - h; k++) {System.out.print("*");}}*/System.out.println();}}}


调用方法如下:

public static void main(String[] args) {Deaw d = new Deaw(7, 3);d.drawRec();// d.drawPra();// d.drawTrian();}


原创粉丝点击