定义一个类 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();
}