【问题标题】:Nest Loops, Cannot figure out how to code this嵌套循环,无法弄清楚如何编码
【发布时间】:2013-04-03 23:13:22
【问题描述】:

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

    -----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 的值。
  • 你真的很亲密。问题出在第二个嵌套 for 循环中的测试中。你最好自己弄清楚而不是用勺子喂答案。
  • 我很想自己弄清楚,除了它很快就要到期而且我已经花了很多时间在它上面,我觉得它太明显了,我只是看不到它。
  • 它通常可以帮助我用笔和纸“可视化”嵌套循环......但你可能已经尝试过了。

标签: java loops nested jgrasp


【解决方案1】:

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

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

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

你想让它做什么? 那么让我们看看所需的输出。您希望 1first 第一行打印一次。您希望在下一行 third 上打印 三次3。您希望 5 在之后的下一行 fifth 上打印 五次 次。以此类推。

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

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

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

【讨论】:

  • 是的,我明白了,想通了,只是将我的主循环更改为 10,并从 1 开始计数为 2,所以它变为 1 ,3 ,5 7, 9
  • 是的,这就是我想要的。我试图弄清楚如何编辑我的答案,以便它在技术上是正确的,除了在概念上有所帮助。
【解决方案2】:
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();
        }
    }
}

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2014-09-27
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多