制作数字金字塔

时间:2013-10-07 01:16:11

标签: java

首先这是家庭作业,所以我不是在寻找问题的答案,只是指示下一步该去哪里。我应该在这个实例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

2 个答案:

答案 0 :(得分:0)

你的问题在这里

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

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

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

答案 1 :(得分:0)

在第一行中,你应该用空格替换3和2,所以在第一个用于循环的循环中你需要使用后面和col你需要引入另一个变量来打印空格而不是后面或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(" ");
        }