11

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

8 回答 8

11

使用模运算符 %。它给你剩下的。因此从 1 开始循环,当 1 除以 10 时,余数为1。当 2 除以 10 时,余数为2,等等。当 10 除以 10 时,输出为0

for(int i = 1; i <= 10; i ++) {
      System.out.println(i % 10);
}
于 2010-12-09T23:06:01.407 回答
10

您需要 mod 运算符 ( %)。

10 % 10 = 0
11 % 10 = 1

它计算除法后的余数。

于 2010-12-09T23:04:39.937 回答
8

为什么你不能只生成这个:

012345678901234567890123456789012345678901234567890123456789

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

于 2010-12-09T23:05:36.610 回答
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);
}
于 2010-12-09T23:05:28.830 回答
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();
}
于 2010-12-10T01:04:57.520 回答
0

您可以尝试使用模数:

i = i % 10
于 2010-12-09T23:05:22.557 回答
0
for (int i=1; i<100; i++)
    System.out.println(i%10);
于 2010-12-09T23:07:11.703 回答
0

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

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

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

于 2010-12-09T23:12:39.997 回答