public void execute(){
for (int i=0;i<=100000000;i++)
{
System.out.println(i);
}
}
このメソッドは 2 秒間だけ実行する必要があります。つまり、for ループでこのメソッドの実行を開始した後、88888 を出力している間に 2 秒が終了した場合、プログラムはそこで停止する必要があります。それは可能ですか?
public void execute(){
for (int i=0;i<=100000000;i++)
{
System.out.println(i);
}
}
このメソッドは 2 秒間だけ実行する必要があります。つまり、for ループでこのメソッドの実行を開始した後、88888 を出力している間に 2 秒が終了した場合、プログラムはそこで停止する必要があります。それは可能ですか?
ループ内でいつでも使用break;
して、ループをすぐに終了できます。これは、Java の任意のループ ( for
、while
、 などdo...while
) で機能します。例:
public void execute() {
long startTime = System.currentTimeMillis();
for (int i = 0; i <= 100000000; i++) {
long currentTime = System.currentTimeMillis();
if ((currentTime - startTime) >= 2000) {
break;
}
System.out.println(i);
}
}
これにより、時間が 2 秒以上 (大まかに) 経過すると、ループが終了します。
編集: @LouisWasserman がコメントしSystem.nanoTime()
たように、うるう秒などの影響を受けずに、より正確に使用できます。2000000000
代わりにそれを使用する場合は、精度を考慮して差が以上であることを確認してください。
使用できますSystem.currentTimeMillis()
。このようなもの:
public void execute(){
long beginMillis = System.currentTimeMillis();
for (int i=0;i<=100000000;i++)
{
if (System.currentTimeMillis() - beginMillis > 2000) {
break;
}
System.out.println(i);
}
}
サイド ノード - 現在時刻の取得は実際には非常に遅いため、指定された反復回数ごとにチェックを行うことをお勧めします。急に 2 秒で停止することはありませんが、減速は小さくなります。
@Marc Baumbachが述べたようbreak;
に、ループしている場合に使用できます。
ただし、ループを終了するだけでなく、実際にメソッドを終了する場合は、return;
キーワードを使用できます。
public class Tester {
public static void main(String args[]) {
for(int i=0; i<10; i++) {
System.out.println(i);
if(i==5) return;
}
}
}
印刷します...
0
1
2
3
4
5