【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();}
阅读全文
0 0
- 【Java编程】打印图形
- 编程打印如下图形;
- Java打印钻石图形
- java 打印各种 图形
- java打印空心图形
- java 打印各种 图形
- JAVA打印正弦图形
- java 打印图形
- Java打印常见图形
- java图形打印问题
- java打印数字图形
- java打印图形
- Java服务器端图形编程
- java图形编程
- 图形编程 - core java
- Java的图形编程
- JAVA图形化编程
- Java图形用户界面编程
- 5 Zabbix监控windows IIS模版
- 从《编程之美》买票找零问题说起,娓娓道来卡特兰数——兼爬坑指南
- poj 题目1321 棋盘问题
- LeetCode-67. Add Binary
- Origin拼图
- 【Java编程】打印图形
- Java 对象流ObjectInputStream和ObjectOutputStream
- 【高精度】被限制的加法,石油大学
- Log4j的日志级别
- 【剑指offer】面试题19:正则表达式匹配
- SpringMvc入门到开发(五)之json数据交互,RESTful支持,拦截器【附详细截图】
- USACO-Section2.2 Subset Sums [动态规划]
- leetcode -14. Longest Common Prefix
- 架构师之路(十九)DOBBO打成jar包