Java金字塔模式程序实现教程:从入门到精通

这是文章《用Java编写的金字塔模式程序》的第1部分(共1部分)。

模式程序在面试中被广泛用于了解受访者的逻辑思维能力。金字塔模式非常受欢迎,一旦我们掌握了它的创建逻辑,编写相同的代码就是一项简单的任务。

Java语言中的金字塔模式程序

Java中的金字塔模式程序

数字的金字塔形式

如果看第一个模式,每一行都包含相同数字,且重复的次数也相同。然而,每一行的开头都有一定数量的空格,其数量为”行数-i”。让我们来看看打印该模式的程序。

package com.Olivia.patterns.pyramid;

import java.util.Scanner;

public class PyramidPattern {

	private static void printPattern1(int rows) {
		// 用于行的for循环
		for (int i = 1; i <= rows; i++) {
			// 数字前面的空格
			int numberOfWhiteSpaces = rows - i;

			// 打印前导空格
			printString(" ", numberOfWhiteSpaces);

			// 打印数字
			printString(i + " ", i);

			// 换行
			System.out.println("");
		}
	}

	// 用于打印字符串给定次数的实用函数
	private static void printString(String s, int times) {
		for (int j = 0; j < times; j++) {
			System.out.print(s);
		}
	}

	public static void main(String[] args) {

		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入要打印的行数:");
		int rows = scanner.nextInt();
		// System.out.println("行数 = "+rows);
		scanner.close();

		System.out.println("打印模式1\n");
		printPattern1(rows);

	}

}

请注意,我已经为常见的字符串打印任务创建了一个实用函数。如果你能将程序分割为短小可重用的函数,这表明你不仅仅是为了编写程序,还要确保其质量和可重用性。当我们运行上述程序时,我们会得到以下输出结果。

请输入要打印的行数:
9
打印模式1

        1 
       2 2 
      3 3 3 
     4 4 4 4 
    5 5 5 5 5 
   6 6 6 6 6 6 
  7 7 7 7 7 7 7 
 8 8 8 8 8 8 8 8 
9 9 9 9 9 9 9 9 9 
Java金字塔模式程序输出

逐渐增长的数字金字塔模式

这里是打印图案2的函数。需要注意的关键点是前导空格的数量,然后按照增加的顺序打印数字。

/**
 * 
 * 打印以下金字塔结构的程序
 *      1         
       1 2        
      1 2 3       
     1 2 3 4      
    1 2 3 4 5     
   1 2 3 4 5 6    
  1 2 3 4 5 6 7   
 1 2 3 4 5 6 7 8  
1 2 3 4 5 6 7 8 9 
*/
private static void printPattern2(int rows) {
	// 用于行的for循环
	for (int i = 1; i <= rows; i++) {
		// 数字前面的空格
		int numberOfWhiteSpaces = rows - i;

		// 打印前导空格
		printString(" ", numberOfWhiteSpaces);

		// 打印数字
		for(int x = 1; x<=i; x++) {
			System.out.print(x+" ");
		}

		// 换行
		System.out.println("");
	}
}

字符的金字塔

这个真的很简单,我们只需打印字符,无需计算或操作。

/**
 * 打印以下金字塔结构的程序
        *         
       * *        
      * * *       
     * * * *      
    * * * * *     
   * * * * * *    
  * * * * * * *   
 * * * * * * * *  
* * * * * * * * * 

*/
private static void printPattern3(int rows) {
	// 用于行的for循环
	for (int i = 1; i <= rows; i++) {
		// 数字前面的空格
		int numberOfWhiteSpaces = rows - i;

		// 打印前导空格
		printString(" ", numberOfWhiteSpaces);

		// 打印字符
		printString("* ", i);

		// 换行
		System.out.println("");
	}
}

金字塔图案程序4

/**
* 
*               1 
              1 2 1 
            1 2 3 2 1 
          1 2 3 4 3 2 1 
        1 2 3 4 5 4 3 2 1 
      1 2 3 4 5 6 5 4 3 2 1 
    1 2 3 4 5 6 7 6 5 4 3 2 1 
  1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 
*/

private static void printPattern4(int rows) {
	// 用于行的for循环
	for (int i = 1; i <= rows; i++) {
		// 数字前面的空格
		int numberOfWhiteSpaces = (rows-i)*2;

		// 打印前导空格
		printString(" ", numberOfWhiteSpaces);

		// 打印数字
		for(int x=1; x<=i; x++) {
			System.out.print(x+" ");
		}
		
		for(int j=i-1; j>0; j--) {
			System.out.print(j+" ");
		}

		// 换行
		System.out.println("");
	}
}

注意到每一行都有2*r-1个数字。所以在我们打印任何数字之前,我们将有(rows-i)*2个空格。然后数字从1开始到”i”,再到1。我们打印数字的逻辑需要使用两个for循环来实现这一点。

Java中的金字塔模式5程序

/**
 * 
 *                9 
                8 9 8 
              7 8 9 8 7 
            6 7 8 9 8 7 6 
          5 6 7 8 9 8 7 6 5 
        4 5 6 7 8 9 8 7 6 5 4 
      3 4 5 6 7 8 9 8 7 6 5 4 3 
    2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 
  1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 
*/
private static void printPattern5(int rows) {
	// 用于行的for循环
	for (int i = rows; i >= 1; i--) {
		// 数字前面的空格
		int numberOfWhiteSpaces = i*2;

		// 打印前导空格
		printString(" ", numberOfWhiteSpaces);

		// 打印数字
		for(int x=i; x<=rows; x++) {
			System.out.print(x+" ");
		}
		
		for(int j=x-1; j>=i; j--) {
			System.out.print(j+" ");
		}

		// 换行
		System.out.println("");
	}
}

字符的倒金字塔形状

这是反向金字塔程序的代码片段。

/**
 * 
* * * * * * * * * 
 * * * * * * * * 
  * * * * * * * 
   * * * * * * 
    * * * * * 
     * * * * 
      * * * 
       * * 
        * 
 */
private static void printPattern6(int rows) {
	// 用于行的for循环
	for (int i = rows; i >= 1; i--) {
		// 数字前面的空格
		int numberOfWhiteSpaces = rows - i;

		// 打印前导空格
		printString(" ", numberOfWhiteSpaces);

		// 打印字符
		printString("* ", i);

		// 换行
		System.out.println("");
	}
}

数字的倒金字塔图案

让我们来看一个由数字组成的倒金字塔模式的例子。

	/**
	 * 
9 9 9 9 9 9 9 9 9 
 8 8 8 8 8 8 8 8 
  7 7 7 7 7 7 7 
   6 6 6 6 6 6 
    5 5 5 5 5 
     4 4 4 4 
      3 3 3 
       2 2 
        1 
	 */
private static void printPattern7(int rows) {
	// 用于行的for循环
	for (int i = rows; i >= 1; i--) {
		// 数字前面的空格
		int numberOfWhiteSpaces = rows - i;

		// 打印前导空格
		printString(" ", numberOfWhiteSpaces);

		// 打印字符
		printString(i+" ", i);

		// 换行
		System.out.println("");
	}
}

结论

有很多种金字塔的模式。最重要的点是要了解数字和空格是如何组织的模式。一旦你清楚了模式,你就可以轻松在Java或其他编程语言中编写代码。如果你正在寻找特定的模式程序,请告诉我,我会尽力帮助你。

进一步阅读

在Java中编写字符串程序和Java编程面试问题

您可以从我们的GitHub存储库中查看完整的代码和更多编程示例。

bannerAds