0

変数「日」を毎回インクリメントして約1000万回実行されるwhileループがあります。100 万日が経過したときにのみ行を出力するプログラムが必要です (つまり、

100万日が経過しました

200万日経過

...

ループ完了

これまでのところ、私はコードを持っています:

double dayMill; //outside the loop
...
dayMill = day/1000000; //every runthrough of the loop

次のようなものでifステートメントを使用することを考えていました

if( (int)dayMill == dayMill){}

day = 1,000,000 の場合、daymill = 1 なので、int としてキャストすると、それも 1 になります。ただし、これは機能しません。それは0.0百万日を出力します... 1.0までたくさん..... 私が望む百万ごとに1行だけではありません

4

6 に答える 6

6
if(dayMill % 1000000 == 0)
{
    //print statement
}

それは、dayMill を int にした場合です。1ずつインクリメントしているのに、なぜ2倍なのですか? 私はあなたが何をしているのか正確には理解していないと思います。

于 2012-11-02T15:04:16.987 に答える
1

どうですか

if (day % 1000000 == 0) {...}
于 2012-11-02T15:04:35.030 に答える
1

ループ インデックスが何であれ、

if (index % 1000000 == 0)
{
    // do your magic
}
于 2012-11-02T15:05:26.877 に答える
0

モジュラスを使用できます

for (long i = 1; ; i++) {
    if (i % 1000000 == 0)
        System.out.println(i);

}

版画

1000000
2000000
3000000
4000000
5000000
6000000
7000000
... etc ...
于 2012-11-02T15:05:31.800 に答える
0

または....

i++;
if(i == 1000000) {
    print stuff;
    i=0;
}
于 2012-11-02T15:07:16.707 に答える
0

私がすることは次のとおりです。

int count = 0;
int times = 1_000_000;
while (true) {
    ....
    if ( ++count % times == 0 ) {
       ...
    }
}
于 2012-11-02T15:07:34.960 に答える