-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

他の人が投稿したように、インクリメントenterは実際に何かを印刷するときにのみ行う必要があります。何かを印刷しない場合、ループの繰り返しで5回テストしても意味がありません。

もう 1 つのポイントは、正しく終了することです。最後の行に 5 つの数字がある場合enter、ループが終了すると 0 になり、次の行に移動します。ただし、最後の行が短い場合は、println()完了後に必ず a を実行する必要があります。そう:

  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 に答える
0

ループを に変更する for(int x = 17 ; x <= 10000 ; x+=17) と解決し、コードが約 17 倍速くなります。

次に、係数チェックも削除できます。

于 2013-09-05T20:49:41.340 に答える