【问题标题】:java inverted pyramid of numbers?java倒金字塔?
【发布时间】:2022-01-06 11:24:16
【问题描述】:

我被要求创建一个显示倒金字塔数字(仅限 1 到 9)的 java 程序。用户输入多少行。

我不知道如何循环并将数字限制为 9 并将其更改为右侧。

我的代码是:

    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in);
        
        System.out.print("Enter height:\t");
        int height = sc.nextInt();
        
        for (int row = height; row >= 1; row--) {
            for (int col = 1; col <= row; col++) {
                System.out.print("");
            }
            for (int k = 1; k <= row; k++) {
                System.out.print(row + "");
            
            }
            System.out.println();
        }
        
        
    }
}

输出是:

Enter height:   12
121212121212121212121212
1111111111111111111111
10101010101010101010
999999999
88888888
7777777
666666
55555
4444
333
22
1

输出应该是:

Enter height:  12
    111111111111
     22222222222
      3333333333
       444444444
        55555555
         6666666
          777777
           88888
            9999
             111
              22
               3

或者:

Enter height:  20
11111111111111111111
 2222222222222222222
  333333333333333333
   44444444444444444
    5555555555555555
     666666666666666
      77777777777777
       8888888888888
        999999999999
         11111111111
          2222222222
           333333333
            44444444
             5555555
              666666
               77777
                8888
                 999
                  11
                   2

【问题讨论】:

  • 您的样本输出是直角三角形,而不是金字塔 - 这是故意的吗?作业是否包括这些作为示例,或者是否有输出的描述?
  • 您的帖子包含(至少隐含地)三个问题:1. 将金字塔限制在 19 之间的数字 - 2. 使金字塔上升而不是下降 - 3. 使金字塔右对齐的左对齐。我的评论只会解决第一个问题,因为这是您明确询问的问题。 --- 我建议使用单独的变量来表示用于当前行的数字。当它是&gt;= 10 时,我们可以编写一些自定义逻辑将其重置为1,例如通过使用if statement (oracle.com)

标签: java loops for-loop


【解决方案1】:

您的主循环从高度运行到 0,这导致您打印的数字从高度到 1,而输出期望它按升序排列。

输出进一步期望任何大于 9 的高度值再次被视为单位数增量,因此在 9 之后再次出现 1 而不是 10。

你有通过附加空格的写想法,但要在java中附加空格,你实际上必须在两个“”之间添加空格

例子:

System.out.print(" ").

解决上述所有问题,代码 sn-p 应该如下所示:

    public static void main(String[] args) {
        Scanner sc = new Scanner (System.in);
        
        System.out.print("Enter height:\t");
        int height = sc.nextInt();
        
        for (int row = 1; row <=height; row++) {
            for (int space = 1; space < row; space ++) {
                System.out.print(" ");
            }
            for (int val = row ; val <= height; val++) {
                if(row>9){
                    System.out.print(row%10+1);
                }
                else{
                     System.out.print(row);
                }
            }
            System.out.println();           
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 2019-09-14
    相关资源
    最近更新 更多