0

100 万回の繰り返しごとにメッセージを出力するループを作成する必要があります。10 秒間 (クロック時間) 実行して、ステートメントがいくつ印刷されるかを確認したいと考えています。

私は今、自分自身を結び目で縛っていると思いますが...

public class OneInAMillion{
  public static void main(String []args){
    long startTime = System.currentTimeMillis();  //time at start of execution
    long endTime = startTime + 10000;  //time at end of execution (10000 = 10 seconds)
    int count = 1;

    while(System.currentTimeMillis() < endTime) { //run this before 10 seconds is up
      for (int i = 0; i < count; i++) {
        if(i % 1000000 == 0) {
            System.out.println("Iteration: " + count++);  //print every millionth iteration
        }
      }
    }

    System.out.println("Time up!"); //print once loop finishes
  }
}
4

3 に答える 3

5

ループにループがあります。各ループが何をするか考えてみてください。最初のループは 10 秒が経過するまで続きます。もう 1 つは単純に 0 から 1 への移行を開始し、while ループの次の反復で 0 から 2 へ、次に 0 から 3 へと移行します。0%1000000 は 0 であるため、0 の場合にも出力されます (非常に多く)。

それらを 1 つのループに結合してみてください。これは、while ループを取り除き、while ループの条件を持つ for ループのみを使用することで実行できます。

  public static void main(String[] args) {
     long endTime = System.currentTimeMillis() + 10000;  //time at end of execution (10000 = 10 seconds)
     for (int i = 1; System.currentTimeMillis() < endTime; i++) {
        if(i % 1000000 == 0) {
            System.out.println("Iteration: " + i/1000000);  //print every millionth iteration
        }
      }
      System.out.println("Time up!"); //print once loop finishes
  }

count常に i/1000000 になることに注意してください。

于 2013-04-23T11:04:19.407 に答える
0

forループを取り除き、カウントの代わりに印刷i++する前に行い、設定する必要があります。ifi

public class OneInAMillion{
  public static void main(String []args){
    long startTime = System.currentTimeMillis();  //time at start of execution
    long endTime = startTime + 10000;  //time at end of execution (10000 = 10 seconds)
    //int count = 1;
    int i = 0;
    while(System.currentTimeMillis() < endTime) { //run this before 10 seconds is up
        i++;
        if(i % 1000000 == 0) {
            System.out.println("Iteration: " + i);  //print every millionth iteration
        }
    }

    System.out.println("Time up!"); //print once loop finishes
  }
}
于 2013-04-23T11:03:27.873 に答える