質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Q&A

解決済

1回答

3156閲覧

【Java】一定時間繰り返すという処理の書き方

kobahito

総合スコア87

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

0グッド

0クリップ

投稿2020/03/07 16:04

編集2020/03/07 16:05

例えば6秒間その処理を繰り返すという処理を書くにはどう記述すればよいでしょうか?
下記みたいに記述してもうまく動作しません。(カウントが0と出力される)

html

1 public static void main(String[] args) throws Exception { 2 3 //開始時の時刻 4 long start_point = System.currentTimeMillis(); 5 int count = 0; 6 //現在時刻と比較して6秒を超えるまで繰り返す 7 while(System.currentTimeMillis()-start_point < 6000) { 8 count++; 9 } 10 System.out.println(count); 11 }

初学者であまりよくわかっていませんが、
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/03/07 16:29 編集

6秒間、とにかくwhile のブロック内の処理を何回も実行するという意味ではそのコードで合っているように思います。実行したPCのCPUスペックや、そのプログラムの実行に割り当てられる時間(CPU時間)によってさまざまな値のcountが出そうですが、count=0と言うのは考えづらいです。(実際、試してみましたが0ではないです)どのようなOS、実行環境、プログラム形態(サーブレットとかスレッドとか)で試しましたか?
dodox86

2020/03/07 16:36

> プログラム形態(サーブレットとかスレッドとか) 失礼しました。ご提示のコードそのままであれば単なるJavaアプリケーションですね。まったく同じコードでcount=0となるということでしょうか。
kobahito

2020/03/07 16:42

すいません。 ごちゃってるプログラム文を整理してから登校していたんですが、 投稿した文をそのまま張りなおして実行したら正常に動きました。 一応OSはWindows10でEclipse上でJavaアプリケーションとして実行していました。 回答ありがとうございます。
jimbe

2020/03/07 16:46

paiza.io で 1000 で実行しましたら 34691804 と出ました.
kobahito

2020/03/07 16:50

検証ありがとうございます。 こちらの動作環境でも正常に動作しました。 お騒がせしてすいません。
guest

回答1

0

自己解決

投稿の文をそのまま実行したら正常に動作しました。
レベルの低い質問になってしまってすいませんでした。

投稿2020/03/07 16:44

kobahito

総合スコア87

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/03/07 17:04

実は、count=0であったときのコードは while(System.currentTimeMillis()-start_point < 6000); { count++; } であったりなんかしたりして。while ()の次に';'
dodox86

2020/03/07 17:07 編集

あ、いや、そうだとしてもcount=1 ですね。解決したのであればそれで結構です。
kobahito

2020/03/08 12:34

なにかしらのミスがあったとは思います。不等式を逆さにしてみたりしたときにcountが1になったりしたのでもしかしたらご推察の通りだったかもしれません。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問