0

首先,这是家庭作业,所以我不是在寻找问题的答案,只是在寻找下一步该去哪里的指针。我应该在此实例 3 中获取用户输入 (x),并根据输入返回一个看起来像这样的金字塔;

    1
  2 1 2
3 2 1 2 3

我试图将问题分解为从 1 到 x 和从 x 到 1 的打印并将两者连接起来。这根本行不通!到目前为止,这是我的代码

import java.util.Scanner;

public class Q8 {

    public static void main(String[] args) 
    {
        Scanner user_input = new Scanner (System.in);

        System.out.println("Please enter an integer 1-15:");
        int input = user_input.nextInt();

        for(int row=1;row<=input;row++)
        {
            for(int back=input;back>=2;back--)
            {
                System.out.print(back+" ");
            }
            for(int col=1;col<=row;col++)
            {
            System.out.print(col+" ");
            }

            System.out.println();
        }




    }
}

问题不是打印它打印的上面的金字塔;

 3 2 1
 3 2 1 2
 3 2 1 2 3
4

2 回答 2

0

在第一行中,您应该将 3 和 2 替换为空格,因此在使用 back 和 col 的第一个 for 循环中,您必须引入另一个变量来打印空格而不是 back 或 col 数字,例如:

  int input = user_input.nextInt();
     int i = 1;

    for(int row=1;row<=input;row++)
    {

        for(int back=input;back>=2;back--)
        {

            if(back > i){

            System.out.print(" ");

             }else{

            System.out.print(back);

            } 
            i--;

            System.out.print(" ");
        }
于 2013-10-07T01:38:05.250 回答
0

你的问题在这里

        for(int back=input;back>=2;back--)
        {
            System.out.print(back+" ");
        }

您每次都从输入中循环并打印数字!这意味着即使在第一行,您也将打印 3 2 1。您应该做的是初始化backrow... 尽管问题是在这种情况下,金字塔将左对齐。

如果您希望金字塔正确居中,则需要填写所有行中数字之前的空格(最后一行除外)。您可以使用类似的循环来执行此操作,只是打印空格。不过,根据字体的不同,金字塔看起来可能仍然有些奇怪,因为字符不一定是相同的宽度;不过,它可能对你来说就足够了。

于 2013-10-07T01:32:29.640 回答