如何设计一个以1开头并以0结尾的int循环(1,2,3,4,5,6,7,8,9,0)

时间:2010-12-09 23:02:57

标签: java loops for-loop nested-loops

我的问题是使用嵌套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);
}

大! Modulo是我一直在寻找的答案。我对此感到更舒服:

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

8 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:10)

你想要mod运算符(%)。

10 % 10 = 0
11 % 10 = 1

计算除法后的余数。

答案 2 :(得分:8)

为什么你不能生成这个:

012345678901234567890123456789012345678901234567890123456789

然后把角色从前面取下并贴在最后?

答案 3 :(得分: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 :(得分:2)

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

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

答案 5 :(得分:0)

您可以尝试使用modulo:

i = i % 10

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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

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

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