Java练习:打印各种图形(等腰三角形、直角三角形、实心菱形、空心菱形)
Java打印各种图形(等腰三角形、直角三角形、实心菱形、空心菱形)
学习笔记,方便自己日后复习,也可供大家参考学习
1.打印等腰三角形
代码:
// 打印出等腰三角形
@Test
public void demo04() {
for (int i = 1; i <= 5; i++) {
// 控制行数
for (int j = 5 - i; j >= 0; j--) {
// 控制每一行星星前面的空格数
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
// 控制星星数
System.out.print("*");
}
System.out.println();//分行,开始下一行的输出
}
}
运行截图:
2.打印直角三角形
// 打印直角三角形
@Test
public void demo05() {
for (int i = 1; i <= 5; i++) {
//控制行数
for (int j = 0; j < i; j++) {
//控制每一行的星星数
System.out.print("*");
}
System.out.println();//开始下一行
}
}
运行截图:
3.打印实心菱形
分析:在这里菱形组成可以看为两个等腰三角形组成,可以拆解为打印一个正立三角形,一个倒立三角形。由于中间所画的这条对角线只能有一个,所以要么正立三角形星星的行数比倒立三角形星星的行数少一行,要么倒立三角形星星的行数比正立三角形星星的行数少一。
代码:
// 打印实心菱形
@Test
public void demo06() {
// 第一个等腰三角形(正着的)
for (int i = 0; i < 5; i++) {
// 控制行数
for (int j = 0; j < 5 - i; j++) {
//控制每一行星星前面的空格数
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
//控制每一行星星数
System.out.print("*");
}
System.out.println();//分行,开始下一行的输出
}
// 第二个等腰三角形(倒着的)
for (int i = 3; i > 0; i--) {
// 控制行数
for (int j = 4 - i; j >= 0; j--) {
//控制每一行星星前面的空格数
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
//控制每一行星星数
System.out.print("*");
}
System.out.println();//分行,开始下一行的输出
}
}
运行截图:
4.打印空心菱形
分析:这个思路和打印实心菱形大致一样,不过就是只显示四个边的星星,中间部分的让其不显示,可以先判断它是否等于初始值或者结束值,如果等于这两个值其中一个就让其输出为“*”,如果不是就输出为空格(“ “).
代码:
// 打印空心菱形
@Test
public void demo07() {
// 第一个等腰三角形(正着的)
for (int i = 0; i < 5; i++) {
// 控制行数
for (int j = 0; j < 5 - i; j++) {
//控制每一行星星前面的空格数
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
//控制每一行星星数
if (j == 0 || j == 2 * i - 2) {
//如果为开头或者结尾则输出星星
System.out.print("*");
} else {
//其他(中间)输出空格,不让其显示
System.out.print(" ");
}
}
System.out.println();//换行
}
// 第二个等腰三角形(倒着的)
for (int i = 3; i > 0; i--) {
// 控制行数
for (int j = 4 - i; j >= 0; j--) {
//控制每一行星星前面的空格数
System.out.print(" ");
}
for (int j = 0; j < 2 * i - 1; j++) {
//控制每一行星星数
if (j == 0 || j == 2 * i - 2) {
//如果为开头或者结尾则输出星星
System.out.print("*");
} else {
//其他(中间)输出空格,不让其显示
System.out.print(" ");
}
}
System.out.println();//换行
}
}
运行截图:
还没有评论,来说两句吧...