JAVA 蓝桥杯 打印金字塔

本文介绍了一个简单的Java程序,该程序能够根据用户输入的层数n,打印出由数字组成的金字塔形状。示例中展示了当n为3时的输出效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

输入n值,打印下列形状的金字塔,其中n代表金字塔的层数。

Input

输入只有一个正整数n。

Output

打印金字塔图形,其中每个数字之间有一个空格。

Sample Input

3

Sample Output


    1
  1 2 1
1 2 3 2 1



代码如下:

  1. import java.util.Scanner;
  2. public class Main {
  3. public static void main(String[] args) {
  4. Scanner out = new Scanner (System.in);
  5. int n = out.nextInt();
  6. int i,j,k;
  7. for(j=0;j<2*(n-1);j++) {
  8. System.out.print(" ");
  9. }
  10. System.out.println(1);
  11. for(i=1;i<n;i++) {
  12. k=1;
  13. for(j=0;j<2*(n-i-1);j++) {
  14. System.out.print(" ");
  15. }
  16. for(j=0;j<2*i;j++) {
  17. System.out.print(k+" ");
  18. k++;
  19. if(k==i+1) {
  20. break;
  21. }
  22. }
  23. for(j=0;j<2*i;j++) {
  24. System.out.print(k+" ");
  25. k--;
  26. if(k==1) {
  27. System.out.println(k);
  28. break;
  29. }
  30. }
  31. }
  32. }
  33. }
<think>好的,我现在需要帮用户找到如何用Java实现打印金字塔的示例代码。首先,根据用户提供的引用,有几个相关的代码示例,比如正金字塔、倒金字塔和数字金字塔。用户可能想要基础的星号金字塔,也可能需要更复杂的数字排列,所以得先确定用户的具体需求。不过用户的问题比较广泛,所以应该覆盖不同类型的金字塔。 首先,正金字塔的代码在引用[1]里有例子,使用嵌套循环处理空格和星号。那是一个基础版本,行数固定为5行。用户可能需要可配置行数的代码,所以可以调整代码让用户输入行数。另外,引用[3]提到了数字金字塔,需要处理数字的递增和递减,这也是一种常见需求。而引用[2]和[4]提到了倒金字塔和菱形,可能用户后续会有相关的问题,但当前问题主要针对普通金字塔,所以先以正金字塔为主,再补充其他类型作为扩展。 接下来需要检查代码的正确性。例如,在正金字塔中,每一行的空格数是rows - i,星号数是2*i -1,这部分逻辑是正确的。数字金字塔则需要处理数字的排列,比如从1递增到当前行号,再递减回1,中间用空格分隔。这部分在引用[3]中的描述是正确的,但可能需要具体代码示例。 另外,用户可能需要代码的注释说明,方便理解每一部分的作用。比如外层循环控制行数,内层循环处理空格和星号或数字。同时,考虑是否要让用户输入行数,使用Scanner类来获取输入,这样代码更灵活。 可能的疑问点:是否所有金字塔类型都需要覆盖?用户可能只需要基础的星号金字塔,但提供其他类型作为扩展会更好。此外,代码的格式化是否正确,比如在Java中循环和打印语句是否正确使用。 最后,根据用户提供的引用,确保引用的正确标注,比如引用[1]对应正金字塔,引用[3]对应数字金字塔,引用[2]和[4]涉及倒金字塔和菱形,可以作为相关问题提出。需要确保每个代码示例都有对应的引用标注,并且问题部分引导用户深入了解更多类型。</think>以下是用Java实现打印金字塔的三种典型代码示例及说明: ### 一、标准星号金字塔 ```java public class Pyramid { public static void main(String[] args) { int rows = 5; // 控制金字塔行数 for (int i = 1; i <= rows; i++) { // 打印前导空格 for (int j = rows - i; j > 0; j--) { System.out.print(" "); } // 打印星号 for (int k = 1; k <= (2 * i - 1); k++) { System.out.print("*"); } System.out.println(); } } } ``` 输出效果: ``` * *** ***** ******* ********* ``` 此代码通过两层嵌套循环控制空格和星号的打印,核心公式为每行星号数量$2i-1$[^1] ### 二、数字金字塔 ```java import java.util.Scanner; public class NumberPyramid { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入金字塔行数: "); int rows = scanner.nextInt(); for (int i = 1; i <= rows; i++) { // 打印前导空格 for (int j = rows - i; j > 0; j--) { System.out.print(" "); } // 打印递增数字 for (int k = 1; k <= i; k++) { System.out.print(k + " "); } // 打印递减数字 for (int k = i-1; k >= 1; k--) { System.out.print(k + " "); } System.out.println(); } } } ``` 输入5时输出: ``` 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 ``` 该模式通过数字的对称排列形成金字塔结构[^3] ### 三、倒金字塔 ```java public class InvertedPyramid { public static void main(String[] args) { int rows = 5; for (int i = rows; i >= 1; i--) { // 打印前导空格 for (int j = rows - i; j > 0; j--) { System.out.print(" "); } // 打印星号 for (int k = 1; k <= (2*i - 1); k++) { System.out.print("*"); } System.out.println(); } } } ``` 输出效果: ``` ********* ******* ***** *** * ``` 倒金字塔通过逆序循环实现[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值