【问题标题】:How do I design an int loop that starts with 1 and ends with 0 (1,2,3,4,5,6,7,8,9,0)如何设计一个以 1 开头并以 0 结尾的 int 循环 (1,2,3,4,5,6,7,8,9,0)
【发布时间】:2011-05-23 04:27:29
【问题描述】:

我的问题是使用嵌套的 for 循环来创建此输出:

         |         |         |         |         |         |
123456789012345678901234567890123456789012345678901234567890

我想不出用 0 替换 int 10 的最佳方法。我尝试了几种方法,但它们很花哨,对我来说似乎不合适。我希望我的问题很明显,很难解释。有人能指出我正确的方向吗?

我已经获得了正确的输出,但有些事情告诉我有更好的方法来解决这个问题。这是我的代码:

int k = 0;  
for (int i=1; i<=6; i++){
   System.out.print("         |");
}
System.out.println();
for (int m=0; m<6; m++){
   for (int j=1; j<10; j++){
      System.out.print(j);
   }
   System.out.print(k);
}

太棒了!模数是我正在寻找的答案。我对此感觉更舒服:

for (int i=1;i<=6;i++){
   System.out.print("         |");
}
System.out.println();
for (int m=0;m<6;m++){
   for (int j=1;j<=10;j++){
      System.out.print(j % 10);
   }
}

【问题讨论】:

    标签: java loops for-loop nested-loops


    【解决方案1】:

    您需要 mod 运算符 (%)。

    10 % 10 = 0
    11 % 10 = 1
    

    计算除法后的余数。

    【讨论】:

      【解决方案2】:

      您可以尝试使用模数:

      i = i % 10
      

      【讨论】:

        【解决方案3】:

        有很多方法。最简单的可能是这样的:

        for (int i = 1; i <= 10; i++) {
           System.out.println(i % 10);
        }
        

        如果你有 2 个循环,那么你可以使用这个事实:

        for (int i = 0; i < 5; i++) {
           for (int j = 1; j <= 9; j++) {
               System.out.print(j);
           }
           System.out.print(0);
        }
        

        【讨论】:

          【解决方案4】:

          你为什么不能直接生成这个:

          012345678901234567890123456789012345678901234567890123456789
          

          然后把人物从前面拿下来贴在后面?

          【讨论】:

            【解决方案5】:

            使用modulo operator %。它给你剩下的。 因此从 1 开始循环,当 1 除以 10 时,余数为 1。 当 2 除以 10 时,余数为 2,以此类推。当 10 除以 10 时,输出为 0

            for(int i = 1; i <= 10; i ++) {
                  System.out.println(i % 10);
            }
            

            【讨论】:

              【解决方案6】:
              for (int i=1; i<100; i++)
                  System.out.println(i%10);
              

              【讨论】:

                【解决方案7】:

                这是一个非模数解决方案:

                $x = 1;
                while(1){
                  if($x>9){
                     $x=0;
                  }
                print $x;
                $x++;
                }
                

                是的,是的,我知道它很便宜。不过它会起作用的。 ;)

                【讨论】:

                • @Software Monkey:我很担心,直到我注意到其他人也这样做了。或者它只循环一次。
                【解决方案8】:

                如果这代表一种模式,那么虽然不是简单地定义模式然后将结果输出到屏幕(或做任何你想做的事),它是:

                printPattern("         |", 6);
                printPattern("1234567890", 6);
                
                public void printPattern(string pattern, int max)
                {   
                    int i = 0; 
                    while (++i <= max)
                        System.out.print(pattern);
                    System.out.println();
                }
                

                【讨论】:

                • +1 虽然输出会建议循环+模数,但保持简单并没有错!
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2019-07-20
                • 2019-11-04
                • 2012-09-22
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多