Nest Loops,无法弄清楚如何编写代码

时间:2013-04-11 16:35:09

标签: java loops nested jgrasp

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

    -----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-

2 个答案:

答案 0 :(得分:8)

您有正确的短划线数,只是没有正确打印出数字。让我们来看看为什么:

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

它做什么? 它打印出j,其中j的范围从19j每次迭代循环增加2。换句话说,1, 3, 5, 7, 9,在您的输出中确认

你想要它做什么? 那么让我们来看看所需的输出。您希望在 第一 第一行 上打印一次 {em}。您希望在 第三 下一行三次打印1。您希望{<1}}在 第五 下一行打印五次次。等等。

你注意到一个模式吗?您希望我们上面提到的循环打印相同的号码(351,... 3)作为号码时间(5i1,... 3)。

编辑 Whooops我实际上误读了输出。我的答案仍然与以前非常相似,但我撒谎说你打印的是哪一行。它仍然是5 三次次,i 五次次,但不同的行。从我的解决方案跳到实际解决方案的最简单方法是注意在偶数行上......你什么都不做。你甚至可以用这种方式编写你的解决方案。

另一个提示是,您应该专注于将每行上的数字和破折号分开。当你修复每一行的数字时,你可能会搞砸破折号码,但是你会明白如何轻松修复破折号。

答案 1 :(得分:-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();
        }
    }
}