0

这是我的代码

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

    int tri,  a;
    int b;

    System.out.println("Enter the size you want your triangle to be:");

    tri = keyboard.nextInt();      

    for (a = 1; a <= tri; a++)
    {
        for (b = 1; b <= a; b++)
        {
            System.out.print("*");
        }

    }
}

当我运行并输入前。3 我想让代码说

在此处输入图像描述

我知道我可能会丢失一些循环,因为我只是在代码的开始阶段。我跑去看看一切是否如我所愿,但事实并非如此。当我输入 3 时,我将所有内容放在一行上:

******

帮助解释将不胜感激。
它应该适用于任何数字,而不仅仅是 3

4

4 回答 4

2

您需要对代码进行两项更改。首先,您需要在外循环的每次迭代中结束该行。其次,你需要做三角形的底部。这是两者兼而有之的代码:

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

    int tri,  a;
    int b;

    System.out.println("Enter the size you want your triangle to be:");

    tri = keyboard.nextInt();      

    for (a = 1; a <= tri; a++)
    {
        for (b = 1; b <= a; b++)
        {
            System.out.print("*");
        }
        // this next call ends the current line
        System.out.println();
    }
    // now for the bottom of the triangle:
    for (a = tri - 1; a >= 1; a--) {
        for (b = 1; b <= a; b++)
        {
            System.out.print("*");
        }
        System.out.println();
    }
}
于 2013-07-12T20:51:21.907 回答
1

或者只是一个循环:

int x = 3; // input tri
var y = x*2;

for (int i = 0; i < y; ++i) {
    for (int j = 0; j < (i < x ? i : y-i); ++j) {
        System.out.print("*");
    }
    System.out.println();
}
于 2013-07-12T21:01:24.743 回答
0

每次访问外循环时都需要这样做:

system.out.println();

这允许 * 位于不同的行上,而且这段代码只处理三角形的上半部分。为了做下半部分,你必须从三开始倒数。

于 2013-07-12T20:48:41.013 回答
0

System.out.print打印当前输出缓冲区(即控制台)中的所有内容。您必须使用System.out.println(注意ln后缀)来打印一些东西和一个断线。

于 2013-07-12T20:52:06.143 回答