5

嘿,我有一个问题我已经想弄清楚几个小时了,我需要使用嵌套循环来打印以下内容

    -----1-----
    ----333----
    ---55555---
    --7777777--
    -999999999-

这就是我到目前为止所拥有的。

    public static void Problem6 () {
        System.out.println("Problem 6:");
        for (int i = 1; i <= 5; i++) {
            for (int j = 5; j >= i; j--) {
                System.out.print("-");
            }
            for (int j = 1; j <= 9; j += 2) {
                System.out.print(j);
            }
            for (int j = 5; j >= i; j--) {
                System.out.print("-");
            }
            System.out.println();
        }
    }

这就是它打印的内容

    -----13579-----
    ----13579----
    ---13579---
    --13579--
    -13579-
4

3 回答 3

8

你有正确数量的破折号,你只是没有正确打印出数字。让我们来看看为什么会这样:

哪个循环打印出数字?第二个嵌套 for 循环。

它有什么作用?它打印出j范围j1到的位置,9j在每次循环迭代时递增 2。换句话说,1, 3, 5, 7, 9,这在您的输出中得到确认

你想让它做什么?好吧,让我们看看所需的输出。您想在第一1打印一次。您想在下第三行打印三次。你想在那之后的第五行打印五次。等等。35

你注意到一个模式吗?您希望我们上面提到的那个循环打印相同的数字(1, 3, 5, ... i)作为次数(1, 3, 5, ... i)。

编辑哎呀,我实际上误读了输出。我的回答仍然与以前非常相似,但我谎报了你在打印哪一行。它仍然是3 三倍5 五倍,但不同的线条。从我的解决方案跳到实际解决方案的最简单方法是注意在偶数行上......你什么都不做。你甚至可以这样写你的解决方案。

另一个提示是,您应该只专注于将每行上的数字和破折号分开。当您修复每行上的数字时,您可能会搞砸破折号的数量,但随后您会意识到如何轻松修复破折号。

于 2013-04-11T16:50:16.653 回答
0

这些 for 循环

for(int i=1;i<=9;i+=2)
{
    for(int b=9;b>=i;b-=2)
    {
        System.out.print("-");
    }
    for(int j=1;j<=i;j++)
    {
        System.out.print(i);
    }
    for(int b=9;b>=i;b-=2)
    {
        System.out.print("-");
    }
    System.out.println();
}

打印

-----1-----
----333----
---55555---
--7777777--
-999999999-
于 2021-11-15T16:00:30.563 回答
-1
public    class    pattern
{
    public    static    void    main   (    )
    {
        for    (int   i =  1;i<=9;i+=2)
        {
            for(int b = 9;b>=i;b-=2)
            {
                System.out.print(" ");
            }
            for(int j =1;j<=i;j++)
            {
                System.out.print(i);
            }
            System.out.println();
        }
    }
}
于 2013-12-18T14:06:01.283 回答