长方形/正方形
通过循环嵌套打印长方体或正方体是图形打印中最基础的部分,只需要记住外层循环控制的是行数,内层循环控制的是列数即可。
//打印一个六行六列的矩形
public class Tuxing {
public static void main(String[] args) {
//外层for循环控制打印图形行数
for ( int i = 0; i < 6; i++) {
//内层循环控制打印图形列数
for (int j = 0; j < 6; j++) {
System.out.print(" * ");
}
//每打印一行进行换行
System.out.println();
}
}
}
打印结果:
三角形
直角三角形
需要打印直角三角形时,我们可以参照打印长方形/正方形,发现只有列数发生了改变,即每一行的列数都不一样了。因此我们只要想办法使内层循环的次数随着外层循环次数的改变而改变即可。因此我们引入一个变量m,并使m随着外层循环的次数增加而增加。
public class Tuxing {
public static void main(String[] args) {
int m=-1; //m控制每一行的图形个数
//外层for循环控制打印图形行数
for ( int i = 0; i < 6; i++) {
m=m+2;
//内层循环控制打印图形列数
for (int j = 0; j < m; j=j+1) {
System.out.print("*");
}
//每打印一行进行换行
System.out.println();
}
}
}
打印结果:
等腰三角形
打印等腰三角形时我们同样参照直角三角形,发现不同之处在于每行打印之前都多了一些空格,因此我们想办法完成空格的添加即可,因为空格的打印是与“ * ”的打印同级的,因此内部再增加一个循环即可,此时引入变量n来控制打印的空格数。而且为了满足等腰的需求,每行列数的改变值都应该为偶数。
public class Tuxing {
public static void main(String[] args) {
int m=-1; //m控制每一行的图形个数
int n=5; //n控制每一行的空格数
//外层for循环控制打印图形行数
for ( int i = 0; i < 6; i++) {
//此for循环控制每行的空格数
for (int t = 0; t < n; t++) {
System.out.print(" ");
}
m=m+2;
n=n-1;
//内层循环控制打印图形列数
for (int j = 0; j < m; j=j+1) {
System.out.print("*");
}
//每打印一行进行换行
System.out.println();
}
}
}
打印结果:
梯形
梯形与三角形的不同之处在于第一行打印“ * ”的个数,若为一个则为三角形,若为多个则为梯形,即只改变m的初始值即可。因此梯形的打印完全可以参考三角形的打印。此处只给出代码。
等腰梯形
public class Tuxing {
public static void main(String[] args) {
int m=2; //m控制每一行的图形个数
int n=5; //n控制每一行的空格数
//外层for循环控制打印图形行数
for ( int i = 0; i < 6; i++) {
//此for循环控制每行的空格数
for (int t = 0; t < n; t++) {
System.out.print(" ");
}
m=m+2;
n=n-1;
//内层循环控制打印图形列数
for (int j = 0; j < m; j=j+1) {
System.out.print("*");
}
//每打印一行进行换行
System.out.println();
}
}
}
打印结果:
直角梯形
public class Tuxing {
public static void main(String[] args) {
int m=2; //m控制每一行的图形个数
//外层for循环控制打印图形行数
for ( int i = 0; i < 6; i++) {
m=m+2;
//内层循环控制打印图形列数
for (int j = 0; j < m; j=j+1) {
System.out.print("*");
}
//每打印一行进行换行
System.out.println();
}
}
}
打印结果:
其他复合图形
比如菱形和沙漏形都是一由两个等腰三角形组合而成,正六边形则由两个梯形组成,因此大部分复杂图形可由简单图形类推得到。
补充:打印空心图形
如果打印空心的图形我的想法是在打印“ * ”的循环中加IF条件判断语句,只打印出改行的第一个和最后一个“ * ”即可,当然最后一行要完全打印。
上代码:
public class Tuxing {
public static void main(String[] args) {
//等腰三角形
int m=-1; //m控制每一行的图形个数
//外层for循环控制打印图形行数
for ( int i = 0; i < 6; i++) {
//此for循环控制每行的空格数
for (int t = i+1; t < 6; t++) {
System.out.print(" ");
}
m=m+2;
//n=n-1;
//内层循环控制打印图形列数
for (int j = 0; j < m; j=j+1) {
if(i==5 ||(j==0 || j==m-1))
{
System.out.print("*");
}
else {
System.out.print(" ");
}
}
//每打印一行进行换行
System.out.println();
}
}
}
打印效果如图: