-1

您好我有一个问题,我必须打印出可被 17 整除的数字,但我想打印出 5 个数字,然后跳到下一行。这是我拥有的代码,不知道为什么它不起作用....

public class seventeen {
   public static void main(String[] args) {
      int num = 17;
      System.out.print("The Numbers Divisible By 17 are: ");
      int enter = 0;
      for (int x = 1; x <= 10000; x++) {
         if (x % num == 0) {
            System.out.print(x + " ");
         }
         enter++;
         if (enter == 5) {
            enter = 0;
            System.out.println();
         }
      }
   }
}
4

3 回答 3

6

您应该只在达到数字验证时增加您的计数器。这意味着,将enter++;验证移到内部:

if (x % num == 0) {
    System.out.print(x + " ");
    enter++;
}
于 2013-09-05T20:44:50.750 回答
0

改变你的循环 for(int x = 17 ; x <= 10000 ; x+=17) 应该可以解决它,并使你的代码快 17 倍。

然后你也可以删除你的模数检查。

于 2013-09-05T20:49:41.340 回答
0

enter正如其他人所发布的那样,只有在您实际打印某些内容时才应该进行递增;当您不打印某些内容时,在循环迭代中对其进行 5 次测试是没有意义的。

另一点是确保您正确完成。如果最后一行有 5 个数字,则enter循环完成后将为 0,您将在下一行。但是如果最后一行很短,你要确保在完成println()后做一个。所以:

  int enter = 0;
  for (int x = 1; x <= 10000; x++) {
     if (x % num == 0) {
        System.out.print(x + " ");
        enter++;
        if (enter == 5) {
           enter = 0;
           System.out.println();
        }
     }
  }
  if (enter > 0)
     System.out.println();

(PS 我实际上会x+=17在其他答案中使用该方法,但是在许多其他情况下可能会出现这种习惯用法,您实际上必须查看每个项目并且只打印其中一些。)

于 2013-09-05T22:20:33.690 回答