用Java编写的金字塔模式程序
模式程序在面试中被广泛用于了解受访者的逻辑思维能力。金字塔模式非常受欢迎,一旦我们掌握了它的创建逻辑,编写相同的代码就是一项简单的任务。
Java语言中的金字塔模式程序
数字的金字塔形式
如果看第一個模式,每一行都包含相同數字,且重複的次數也相同。然而,每一行的開頭都有一定數量的空格,其數量為 “行數-i”。讓我們來看看打印該模式的程式。
package com.Olivia.patterns.pyramid;
import java.util.Scanner;
public class PyramidPattern {
private static void printPattern1(int rows) {
// for loop for the rows
for (int i = 1; i <= rows; i++) {
// white spaces in the front of the numbers
int numberOfWhiteSpaces = rows - i;
//print leading white spaces
printString(" ", numberOfWhiteSpaces);
//print numbers
printString(i + " ", i);
//move to next line
System.out.println("");
}
}
//utility function to print string given times
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("Please enter the rows to print:");
int rows = scanner.nextInt();
// System.out.println("Rows = "+rows);
scanner.close();
System.out.println("Printing Pattern 1\n");
printPattern1(rows);
}
}
请注意,我已经为常见的字符串打印任务创建了一个实用函数。如果你能将程序分割为短小可重用的函数,这表明你不仅仅是为了编写程序,还要确保其质量和可重用性。当我们运行上述程序时,我们会得到以下输出结果。
Please enter the rows to print:
9
Printing Pattern 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
逐渐增长的数字金字塔模式
这里是打印图案2的函数。需要注意的关键点是前导空格的数量,然后按照增加的顺序打印数字。
/**
*
* Program to print below pyramid structure
* 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 loop for the rows
for (int i = 1; i <= rows; i++) {
// white spaces in the front of the numbers
int numberOfWhiteSpaces = rows - i;
//print leading white spaces
printString(" ", numberOfWhiteSpaces);
//print numbers
for(int x = 1; x<=i; x++) {
System.out.print(x+" ");
}
//move to next line
System.out.println("");
}
}
汉字之金字塔
这个真的很简单,我们只需打印字符,无需计算或操作。
/**
* Program to print following pyramid structure
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
*/
private static void printPattern3(int rows) {
// for loop for the rows
for (int i = 1; i <= rows; i++) {
// white spaces in the front of the numbers
int numberOfWhiteSpaces = rows - i;
//print leading white spaces
printString(" ", numberOfWhiteSpaces);
//print character
printString("* ", i);
//move to next line
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 loop for the rows
for (int i = 1; i <= rows; i++) {
// white spaces in the front of the numbers
int numberOfWhiteSpaces = (rows-i)*2;
//print leading white spaces
printString(" ", numberOfWhiteSpaces);
//print numbers
for(int x=1; x0; j--) {
System.out.print(j+" ");
}
//move to next line
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 loop for the rows
for (int i = rows; i >= 1; i--) {
// white spaces in the front of the numbers
int numberOfWhiteSpaces = i*2;
//print leading white spaces
printString(" ", numberOfWhiteSpaces);
//print numbers
for(int x=i; x=i; j--) {
System.out.print(j+" ");
}
//move to next line
System.out.println("");
}
}
字符的倒金字塔形状
这是反向金字塔程序的代码片段。
/**
*
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
*/
private static void printPattern6(int rows) {
// for loop for the rows
for (int i = rows; i >= 1; i--) {
// white spaces in the front of the numbers
int numberOfWhiteSpaces = rows - i;
//print leading white spaces
printString(" ", numberOfWhiteSpaces);
//print character
printString("* ", i);
//move to next line
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 loop for the rows
for (int i = rows; i >= 1; i--) {
// white spaces in the front of the numbers
int numberOfWhiteSpaces = rows - i;
//print leading white spaces
printString(" ", numberOfWhiteSpaces);
//print character
printString(i+" ", i);
//move to next line
System.out.println("");
}
}
结论 → 结果
有很多种金字塔的模式。最重要的点是要了解数字和空格是如何组织的模式。一旦你清楚了模式,你就可以轻松在Java或其他编程语言中编写代码。如果你正在寻找特定的模式程序,请告诉我,我会尽力帮助你。
进一步阅读
在Java中编写字符串程序和Java编程面试问题
您可以从我们的GitHub存储库中查看完整的代码和更多编程示例。