使用for循环
接收一个整数以表示层数totalLevel,打印出金字塔。
思路:
- 打印一个矩形
public class Stars {
public static void main(String[] args) {
//先打印一个矩形
/*
*****
*****
*****
*****
*****
*/
for (int i = 1; i < 5; i++) {
System.out.println("*****");
}
}
}
2.打印半个金字塔
public class Stars {
public static void main(String[] args) {
// 思路分析:
// 打印半个金字塔
// *
// **
// ***
// ****
// *****
for (int i = 1; i <= 5; i++) {//i表示层数
//控制打印每层的*个数
for (int j = 1; j <= i * 2 - 1; j++) {//此处i用来控制每一层*的个数
System.out.print("*");
}
//每打印完一层的*后就换行
System.out.println("");//学习到println本身就会换行输出。
// System.out.print("\n");
}
}
}
3.打印整个金字塔
public class Stars {
public static void main(String[] args) {
// 思路分析:
// 打印整个金字塔
// * 1 2*层数-1 4空格数(总层数-1)
// *** 3 3
// ***** 5 2
// ******* 7 1
// ********* 9 0
for (int i = 1; i <= 5; i++) {//i表示层数
//在输出*之前还要输出对应空格(即总层数-当前层)
//for (int k = 0; k < 5-i; k++) {
for (int k = 1; k <= 5 - i; k++) {
System.out.print(" ");//此处注意区别println是换行了,321行换下来
}
//控制打印每层的*个数
for (int j = 1; j <= i * 2 - 1; j++) {//此处i用来控制每一层*的个数
System.out.print("*");
}
//每打印完一层的*后就换行
System.out.println("");//学习到println本身就会换行输出。
// System.out.print("\n");
}
}
}
4.打印空心的金字塔
public class Stars {
public static void main(String[] args) {
// 思路分析:
// 打印整个金字塔,当前行的第一和最后一个位置是*,末行全部输出。
// * 1 2*层数-1 4空格数(总层数-1)
// * * 2 3
// * * 2 2
// * * 2 1
// ********* 9 0
int totalLevel = 5; //层数设成变量
for (int i = 1; i <= totalLevel; i++) {//i表示层数
//在输出*之前还要输出对应空格(即总层数-当前层)
//for (int k = 0; k < totalLevel - i; k++) {
for (int k = 1; k <= totalLevel - i; k++) {
System.out.print(" ");//此处注意区别println是换行了,321行换下来
}
//控制打印每层的*个数
for (int j = 1; j <= i * 2 - 1; j++) {//此处i用来控制每一层*的个数
//当前行的第一和最后一个位置是*,最后一层全部输出*
if (j == 1 || j == 2 * i - 1 || i == totalLevel) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
//每打印完一层的*后就换行
System.out.println("");//学习到println本身就会换行输出。
// System.out.print("\n");
}
}
}
5.打印空心菱形
public class Stars {
public static void main(String[] args) {
// 思路分析:
// 打印整个空心菱形,当前行的第一和最后一个位置是*
// * 1 2*层数-1 4空格数
// * * 2 3
// * * 2 2
// * * 2 4 1
// * * 9 9 5 0
// * * 2 7 6 1 每行总数 2[(totalLevel/2+1)*2-i]-1
// * * 2 5 7 2
// * * 2 3 8 3
// * 1 1 9 4 i-(totalLevel/2+1)
int totalLevel = 5; //层数设成变量
for (int i = 1; i <= totalLevel / 2 + 1; i++) {//i表示层数
//在输出*之前还要输出对应空格(即总层数-当前层)
for (int k = 1; k <= (totalLevel / 2 + 1) - i; k++) {
System.out.print(" ");//此处注意区别println是换行了,321行换下来
}
//控制打印每层的*个数
for (int j = 1; j <= i * 2 - 1; j++) {//此处i用来控制每一层*的个数
//当前行的第一和最后一个位置是*,最后一层全部输出*
if (j == 1 || j == 2 * i - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
//每打印完一层的*后就换行
System.out.println("");//学习到println本身就会换行输出。
// System.out.print("\n");
}
for (int i = totalLevel / 2 + 2; i <= totalLevel; i++) {
//空格
//for (int k = 0; k < totalLevel - i; k++) {
for (int k = 1; k <= i - (totalLevel / 2 + 1); k++) {
System.out.print(" ");//此处注意区别println是换行了,321行换下来
}
//控制打印每层的*个数
for (int j = 1; j <= 2 * ((totalLevel / 2 + 1) * 2 - i) - 1; j++) {//此处i用来控制每一层*的个数
//当前行的第一和最后一个位置是*,最后一层全部输出*
if (j == 1 || j == 2 * ((totalLevel / 2 + 1) * 2 - i) - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
//每打印完一层的*后就换行
System.out.println("");//学习到println本身就会换行输出。
// System.out.print("\n");
}
}
}