如何在java中打印数字三角形

如何在java中打印数字三角形,java,Java,我需要生成一个三角形,如图所示: 1 22 333 4444 55555 我的代码是: int i, j; for(i = 1; i <= 5; i++) { for(j = 1; j <= i; j++)   {           System.out.print(i);  }       System.out.print("\n");         } 我需要对我的代码做些什么才能让它正确地面对呢?我在A

我需要生成一个三角形,如图所示:

    1
   22
  333
 4444
55555
我的代码是:

int i, j;
for(i = 1; i <= 5; i++)
{
    for(j = 1; j <= i; j++)  
    {          
        System.out.print(i); 
    }      
    System.out.print("\n");        
}

我需要对我的代码做些什么才能让它正确地面对呢?

我在AP CS课程中遇到了这个问题。我想你可能已经开始学习如何编程了,所以在不给你答案的情况下,我会这么做

使用循环删除每次迭代的空间数。第一次通过时,您希望打印四个空格,然后打印一次1(可能在单独的循环中完成)。
下次通过一个较小的空间,但再打印一次i。

您需要打印一些空间。所需的空间数与正在打印的空间数(
i
)之间存在关系。您可以使用以下方式打印X个空格:

for (int k = 0; k < numSpaces; k++)
{
    System.out.print(" ");
}
for(int k=0;k
因此,在您的代码中:

int i, j;
for(i = 1; i <= 5; i++)
{
    // Determine number of spaces needed
    // print spaces
    for(j = 1; j <= i; j++)  
    {          
        System.out.print(i); 
    }      
    System.out.print("\n");        
}
inti,j;
对于(i=1;i使用此代码

int i, j,z;
            boolean repeat = false;
            for (i = 1; i <= 5; i++) {
                repeat = true;
                for (j = 1; j <= i; j++) {
                    if(repeat){
                        z = i;
                        repeat = false;
                        while(z<5){
                        System.out.print(" ");
                        z++;
                        }
                    }
                    System.out.print(i);
                }

                {
                    System.out.print("\n");
                }
            }
inti,j,z;
布尔重复=假;
对于(i=1;i您可以使用:

int i, j;
int size = 5;
for (i = 1; i <= size; i++) {
    if (i < size) System.out.printf("%"+(size-i)+"s", " ");
    for (j = 1; j <= i; j++) {
        System.out.print(i);
    }
    System.out.print("\n");
}
inti,j;
int size=5;

对于(i=1;i在控制台上格式化时,有时我也会遇到麻烦。。。 …我通常将该问题提取到单独的方法中

所有关于如何创建数字和间距的内容都已经发布了,所以这可能有点过头了^^

/**
* creates a String of the inputted number with leading spaces
* @param number the number to be formatted
* @param length the length of the returned string
* @return a String of the number with the size length 
*/
static String formatNumber(int number, int length){

    String numberFormatted = ""+number; //start with the number
    do{
        numberFormatted = " "+numberFormatted; //add spaces in front of
    }while(numberFormatted.length()<length);   //until it reaches desired length

    return formattedNumber;
}
/**
*创建一个带有前导空格的输入数字字符串
*@param number要格式化的编号
*@param length返回字符串的长度
*@返回一个长度为的数字字符串
*/
静态字符串formatNumber(整数、整数长度){
字符串numberFormatted=”“+number;//以数字开头
做{
numberFormatted=“”+numberFormatted;//在前面添加空格

}while(numberFormatted.length()使用三个循环,它将生成所需的输出:

    for (int i=1;i<6 ;i++ )
    {
        for(int j=5;j>i;j--)
        {
            System.out.print(" ");
        }
        for(int k=0;k<i;k++)
        {
            System.out.print(i);
        }
        System.out.print("\n");
    }
for(int i=1;ii;j--)
{
系统输出打印(“”);
}

对于(int k=0;k您的代码不会产生相反的结果,因为相反的结果意味着您有空格,但在右边。输出的右边是空的,这使您认为您有相反的结果。您需要包含空格以形成所需的形状

试试这个:

public class Test{
    public static void main (String [] args){
        for(int line = 1; line <= 5; line++){
            //i decreases with every loop since number of spaces
            //is decreasing
            for(int i =-1*line +5; i>=1; i--){
                System.out.print(" ");
            }
            //j increases with every loop since number of numbers
            //is decreasing
            for(int j = 1; j <= line; j++){
                System.out.print(line);
            }
            //End of loop, start a new line
            System.out.println();
        }
    }
}
公共类测试{
公共静态void main(字符串[]args){
对于(int line=1;line=1;i--){
系统输出打印(“”);
}
//j随着循环次数的增加而增加
//正在减少
对于(int j=1;j您需要3个for循环:

  • 用于重复和打印实际数字的上层循环
  • 用于打印空间的第一个内部级别
  • 第二个内部级别,用于重复打印数字
  • 在上层循环的末尾打印新行
  • 代码:


    我想打印一些空格。你能想出你需要的空格数和
    I
    之间的关系吗?请你给我解释一下,因为我真的很想知道,如果我再次遇到这种情况,该怎么办?这里的想法不是答案,而是你如何得到它。我要做的第一件事是看看e输出并尝试找到任何关联。然后尝试根据我找到的关联编写一些代码。在这个问题中,你可以看到每次迭代的空格数量递减,每次打印的次数递增一次。是的,你能解释一下我是如何得到我的答案的,因为我并不真正理解整个概念吗一般来说是t个循环。如果你看上面Brian的代码,你会发现他有一个主循环,它控制打印输出的行数。这里有5行。上面写着“//确定所需的空格数”你可以使用一个嵌套循环来打印5-i空格,然后使用第二个嵌套循环来打印j i的次数。如果你在一般情况下遇到循环问题,我建议你查阅你的书(如果有)并阅读一章,或者在YouTube上查找视频。一旦你解决了问题,运行调试并跟踪你的变量以获得更多信息对正在发生的事情有更深入的理解。我觉得这太复杂了,可能会完成工作,但不是最直观的。这段代码中没有复杂的东西。我只使用了一个while循环和一个布尔变量。非常基本的Java这不是一个非常健壮的解决方案。如果他现在想打印6行呢?只使用6行而不是5行。你可以告诉我们将此代码部分插入方法中,并将行数作为参数传递。例如:private void createNumberTriangle(int numberOfLines){},只需将5替换为“numberOfLines”
    public class Test{
        public static void main (String [] args){
            for(int line = 1; line <= 5; line++){
                //i decreases with every loop since number of spaces
                //is decreasing
                for(int i =-1*line +5; i>=1; i--){
                    System.out.print(" ");
                }
                //j increases with every loop since number of numbers
                //is decreasing
                for(int j = 1; j <= line; j++){
                    System.out.print(line);
                }
                //End of loop, start a new line
                System.out.println();
            }
        }
    }
    
    public void printReversedTriangle(int num)
    {
        for(int i=0; i<=num; i++)
        {
            for(int j=num-i; j>0; j--)
            {
                System.out.print(" ");
            }
            for(int z=0; z<i; z++)
            {
                System.out.print(i);
            }
            System.out.println();
        }
    }
    
         1
        22
       333
      4444
     55555
    666666