嵌套循环,无法弄清如何编写代码

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-

你需要以两种方式更改你的中心循环:使迭代次数和打印的值都取决于i的值。 - Patricia Shanahan
你离答案很近了。问题在于第二个嵌套的for循环中的测试。你最好自己找出答案,而不是被人直接告诉答案。 - Nathan Hughes
我很想自己解决这个问题,但是它的截止日期很快到了,而且我已经花了太多时间在上面了。我感觉答案很明显,只是我看不到它。 - ItsRainingHP
通常用笔和纸“可视化”嵌套循环对我有所帮助……但你可能已经尝试过了。 - Nico
3个回答

8
你的破折号数量是正确的,只是你没有正确地打印出数字。让我们看看为什么:
哪个循环打印数字? 第二个嵌套的for循环。
它做了什么? 它打印出j,其中j的范围从1到9,并且每次迭代时j增加2。换句话说,1、3、5、7、9,这在你的输出中得到了确认。
你想让它做什么? 好吧,让我们看看期望的输出。你想要1被打印一次在第一行。你想要3在下一行被打印三次。你想要5在下一行被打印五次。以此类推。
你注意到一个模式了吗?你希望我们上面提到的循环打印相同的数字(1、3、5、... i)作为次数(1、3、5、... i)。
编辑:糟糕,我实际上误读了输出。我的答案仍然非常相似,但我关于你在哪一行打印什么的谎言。它仍然是3三次,5五次,但不同的行。从我的解决方案跳转到实际解决方案最简单的方法是注意到在偶数行上...... 你什么也不做。你甚至可以用这种方式编写你的解决方案。
另一个提示是,你应该只关注每行数字的正确性和破折号的分离。当你在每行修正数字时,很可能会弄乱破折号的数量,但然后你会意识到如何轻松地修复破折号。

是的,我搞定了,我只是将我的主循环改为10,并从1开始每次加2计数,所以它变成了1、3、5、7、9。 - ItsRainingHP
是的,那正是我想表达的。我正在尝试弄清楚如何编辑我的答案,使其在概念上有所帮助的同时也在技术上是正确的。 - rliu

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-

-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();
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接