【问题标题】:Homework: Cannot figure out how to code multiple nested loop作业:无法弄清楚如何编写多个嵌套循环
【发布时间】:2014-09-27 07:24:33
【问题描述】:

我必须编写代码来打印以下内容:

999999999888888887777777666666555554444333221 999999999888888887777777666666555554444333221 999999999888888887777777666666555554444333221 999999999888888887777777666666555554444333221

我能走多远

9999999998888888888777777777666666666555555555444444444333333333222222222111111111 999999999888888888877777777766666666655555555544444444433333333322222222211111111 999999999888888888877777777766666666655555555544444444433333333322222222211111111 999999999888888888777777777666666666555555555444444444333333333222222222111111111

但不知道如何让每次迭代减一

这是我所拥有的:

public static void main(String[] args)
{       
    for(int i = 0; i < 4; i++)
    { 
        for(int j = 9; j >= 1; j--) 
        {               
            System.out.print(j);

            for(int k = 9; k > 0; k--) 
            {                   
                System.out.print(j);            
            }               
        }
        System.out.println();               
    }                       
}

这是我目前对我的理解:第一个循环 (i) 控制要创建的行数,而第一个嵌套循环 (j) 按降序打印数字 9 到 1。第三个嵌套循环 (k) 决定打印每个数字的次数。我现在需要做的是每次迭代循环时将该数字减一。老实说,我有点迷失在这里的代码中。我知道我需要另一个 for 循环,它会导致我的 k 循环在每次迭代时减少一个,但无法弄清楚将它放在哪里让它这样做。我试图像这样在 k 循环内嵌套一个循环:

public static void main(String[] args)
{       
    for(int i = 0; i < 4; i++) 
    {                                   
            for(int j = 9; j >= 1; j--)             
            {
                System.out.print(j);

                for(int k = 9; k > 0; k--) 
                {                   
                    System.out.print(j);

                for(int l = 9; l > 0; l--) 
                {                   
                    System.out.print(j);            
                }               
            }               
    }
    System.out.println();               
}                       

但这没有用。我尝试将它放在 k 循环之前,但这也不起作用。所以现在我基本上把自己弄糊涂了,完全不知道该做什么。

【问题讨论】:

  • 编辑最里面的循环,不要和0比较。提示,提示
  • 你很亲密。不要让 SO 上的破坏运动因为发布得太快而破坏了您的成就感。没有比在努力尝试后得到正确的感觉更好的感觉了。

标签: java nested-loops


【解决方案1】:

识别的关键是你想把j'j'字符打印出来。您的 k for 循环可以从 j 开始并向下到 0

for(int i = 0; i < 4; i++)
{ 
    for(int j = 9; j >= 1; j--) 
    {               
        System.out.print(j);

        for(int k = j; k > 0; k--) 
        {                   
            System.out.print(j);            
        }               
    }
    System.out.println();               
}                

【讨论】:

  • 感谢您和其他所有人帮助我解决这个问题。在我看到如何做到这一点之后,这似乎是一个很大的“duh”,但对于我这个世界来说,我看不到它。再次感谢
【解决方案2】:

提示:在示例 1 中,您有

public static void main(String[] args)
{       
    for(int i = 0; i < 4; i++)
    { 
        for(int j = 9; j >= 1; j--) 
        {               
            System.out.print(j);

            for(int k = 9; k > 0; k--) 
            {                   
                System.out.print(j);            
            }               
        }
        System.out.println();               
    }                       
}

您打印出 8 9 次,因为 k 变量从 9 开始。从随着 j 下降而减小的值开始。

【讨论】:

    【解决方案3】:

    实际上你真的很接近,你只是不应该写两次,你应该确保你写出的次数和数字本身一样多,而不是每次写 9 次。


    一旦你设法解决了这个问题,你应该阅读这个,也许它会有所帮助。
    注意: 这个答案是一个剧透

    999999999888888887777777666666555554444333221 
    999999999888888887777777666666555554444333221 
    999999999888888887777777666666555554444333221 
    999999999888888887777777666666555554444333221
    

    想一想:
    你需要做4次,你go from 9 to 1,并为每个对应的数字写出9...1次。

    所以正如你所说,你需要一个 n 的循环,其中 n 是 4:

    for(int i = 0; i < 4; i++) 
    {
        //...more code here
    }
    

    然后,您需要在该循环中从 9 循环到 1:

    for(int i = 0; i < 4; i++) 
    {
        for(int j = 9; j >= 1; j--)
        {
           //...more code here
        }
    }
    

    那么你只需要写出与数字本身一样多的数字:

    for(int i = 0; i < 4; i++) 
    {
        for(int j = 9; j >= 1; j--)
        {
            for(int k = 0; k < j; k++)
            {
                 //more code here
            }
        }
    }
    

    因此,您只需要在打印出 1 之后添加将写入换行符的行,以及打印本身,就是这样!不过,您也可以这样做。你知道怎么做。

    【讨论】:

    • 我认为从0 to j 运行第三个循环比k = j; k-- 方法更清晰。
    【解决方案4】:
    for(int i = 0; i < 4; i++){
       for(int j = 9; j >= 1; j--)         
        for(int k = j; k > 0; k--) 
            System.out.print(j);            
       System.out.println();     
     }   
    

    【讨论】:

    • 如果您在回答的同时指出操作所犯的错误,那将是一个更好的答案。
    【解决方案5】:
    int k=10;
    for(int i=9; i> 0; i--)
    {
    k--;
    j=k;
    while (j> 0)
    {
    System.out.printf("%d", i);
    j--;
    }
    }
    System.out.printf("%n");
    

    将此存储在一个方法中并在需要时调用它,或者在您的情况下调用它 4 次

    【讨论】:

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