Java語言打印空心菱形
打印空心菱形如果一開始覺得比較困難的話,那么不妨分成幾個步驟走完成菱形的打印。
1.先打印一個直角三角形(都是由星星組成的)
代碼如下:
import java.util.Scanner;//導入Scanner類所在的包
public class RightTriangle{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);//創(chuàng)建一個新的Scanner類用來接受總層數(shù)totalLevel
System.out.println("請輸入總層數(shù)totalLevel:");
int totalLevel = myScanner.nextInt();
for (int i = 1 ; i <= totalLevel ; i++ ) {//一共要打印的總層數(shù)
for (int j = 1 ; j <= 2 * i -1 ; j ++) {//每一層要打印的星星的個數(shù)(2*N-1)
System.out.print("*");
}
System.out.println();
}
}
}
編譯運行,在DOS窗口下輸入5,結(jié)果如下圖所

2.先打印一個實心的三角形(就是空格和星星的組成)
代碼如下:
import java.util.Scanner;
public class SolidTriangle{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);//創(chuàng)建一個新的Scanner類用來接受總層數(shù)totalLevel
System.out.println("請輸入總層數(shù)totalLevel:");
int totalLevel = myScanner.nextInt();
for (int i = 1 ; i <= totalLevel ; i++ ) {//一共要打印的總層數(shù)
for (int j = 1 ; j <= totalLevel - i ; j++ ) {//每一層要打印的空格數(shù)
System.out.print(" ");
}
for (int k = 1 ; k <= 2 * i -1 ; k ++) {//每一層要打印的星星的個數(shù)(2*N-1)
System.out.print("*");
}
System.out.println();
}
}
}
編譯運行,在DOS窗口下輸入5,結(jié)果如下圖所示:

3.先打印一個空心的三角形
代碼如下:
import java.util.Scanner;
public class HollowTriangle{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.print("請輸入總層數(shù):");
int totalLevel = myScanner.nextInt();
for (int i = 1 ; i <= totalLevel ; i++ ) {//一共要打印的層數(shù)
if (i == totalLevel) {
for (int m = 1 ; m <= 2 * i - 1 ; m++ ) {
System.out.print("*");
}
}else{
for (int j = 1 ; j <= totalLevel - i ; j++ ) {//每層要打印的第一批空格數(shù)
System.out.print(" ");
}
System.out.print("*");
for (int k = 1 ; k <= 2 * i - 3 ; k++ ) {//每層要打印的第二批的空格數(shù)
System.out.print(" ");
}
if (i != 1) {
System.out.print("*");
}
System.out.println();
}
}
}
}
編譯運行,在DOS窗口下輸入5,結(jié)果如下圖所示:

4.先打印一個空心的菱形(由兩個空心的三角形組成,因為菱形是對稱的所以下面的那一部分的空心三角形要比上一部分的空心三角形的總層數(shù)減少一個,這個方能構(gòu)成一個菱形。)
代碼如下:
import java.util.Scanner;
public class HollowDiamond{
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.print("請輸入上層總層數(shù):");
int totalLevel = myScanner.nextInt();
//打印菱形的上半部分
for (int i = 1 ; i <= totalLevel ; i++ ) {//上層所需要打印的總層數(shù)
for (int j = 1; j <= totalLevel - i ; j++) {//每層要打印的空格數(shù)(就是總層數(shù)減去所在的層數(shù))
System.out.print(" ");
}
for (int k = 1; k <= 2 * i - 1; k++ ) {//每一行要輸入的星星的數(shù)量(所打印的星星的總數(shù)是2*N-1)
if (k == 1 || k == 2*i - 1 ) {//第一個和最后一個打印星星,其余打印空格
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();//每一行結(jié)束后就進行換行的操作.
}
//打印菱形的下半部分
for (int m = 1 ; m <= totalLevel -1 ; m++) {//因為菱形是對稱的所以下面的總層數(shù)是上層總層數(shù)減去一才能構(gòu)成菱形
for (int n = 1; n <= m ; n ++ ) {
System.out.print(" ");
}
for (int p = 1; p <= 2 * (totalLevel - m) -1 ; p++) {//每一行要輸入的星星的數(shù)量
if (p == 1 || p == 2 * (totalLevel - m) - 1) {//totalLevel- m就是方便的轉(zhuǎn)換,比如說上層一共有五層,那么第六行和第四行的情況一樣
System.out.print( "*");
}else{
System.out.print(" ");
}
}
System.out.println();//每一行結(jié)束后就進行換行的操作.
}
}
}
編譯運行,在DOS窗口下輸入5,結(jié)果如下圖所示:



浙公網(wǎng)安備 33010602011771號