for(;;)というのは、どういう時に使うんですか?
そしてどんな働きをするものなんでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (5件)

皆さんの言うように「無限ループ」です。


自分が意識したタイミングでのみ処理を終了させたい場合に利用します。

基本的には、

for(;;) {
 if(method1()) {
  break;
}
}

のように記述し、method1という関数がtrueを返したときだけ、
ループを終了するといった行為で使用します。

GUIを扱うソフトウェアでは一般的に使われます。
# ユーザが終了ボタンを押したときに、プログラムを終了するなど

こうしておかないと、ソフトウェアを立ち上げて、一定時間したら
勝手にプログラムが終了してしまったりするので。。。


ちなみに、for(;;)とwhile(true)のどちらを使うかはその人のコーディングスタイルだと思います。動作的には全く同じです。。。

通常のループでも、for文とwhile文のどちらでも作れますから、その延長として無限ループを使うときに書き慣れた方を使うことが多いようです。
    • good
    • 0
この回答へのお礼

お礼が遅くなり、
しかもみなさんそれぞれにお礼を言えなくてすいません。

みなさんすごくわかりやすかったです。
ありがとうございました。

お礼日時:2001/09/05 18:27

「無限ループ」と言うやつですね。



while(true) {
}

と言うのも同じ動作をします。
普通はwhile(true)を使うと思っているんですが・・・
for(;;)にメリットがあるかどうかは分かりません。

無限ループは処理の終了がいつになるか分からない処理を
永遠と行うために使ったりします。
(たとえば何かのファイルを監視して、そのファイルが更新されるまで
次の処理を行わないようにする・・・など)

ただし、無限ループの構文の中で外に抜け出す部分を作成しないと、
いつまでたっても終わらなくなってしまいます。
「break」をお忘れなきよう。
    • good
    • 0

ループから抜け出したくない場合に使います。



たとえば定期的にエンドレスで何かをチェックしたい
ような場合に使うことがあります。
# 実際にはプログラムになれた人は別な記述を
# しますが、、、

while(1);
と書いても同様です。
    • good
    • 0

無限ループを表すものですね。



普通for文の中にはループのための条件が入るのですが、
「;」を2つだけで中のループ条件を省略(というかループ条件なし)にしています。
条件がないということはfor文を終了するための条件がないことと同じなので、
延々とループを回りつづけることになるのです。

無限ループなので当然中でなんらかの形でループを抜けるための命令を入れないと、
いつまでたってもプログラムは終了しません(笑)

Javaは経験ないですが意味はこれであっているはずです(笑)
    • good
    • 0

こんにちは。



Cや、C++でも、同じなのですが、
FOR分を用いた 永久ループです。

どこかに抜け道、作らないと大変な事になります。
~~終わんない~~~


でわでわ
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qフラッシュ設定をするものとしないものはどう違うんですか?

テキストなどに

「ストリームはバッファに文字列を保存している。この文字列を指定されたパス(宛先)に書き込むためにフラッシュが必要」

といったことが書いてあるのですが、

ストリームを作って使っているプログラムでも、フラッシュの設定をしているものとしていないものがありますよね?

どんなときにフラッシュの設定をする必要があって、どんなときにはその必要がないということなんでしょうか?

Aベストアンサー

例えば、writeメソッドで書き込んでいたとしても、必ずしも、直接に媒体(ファイルなど)に書き込まれるわけではありません。
直ちに、媒体に書き込みたい場合には、フラッシュを使用します。

Qinputタグのclass名にコロン「:」が使われていますが、どういう

inputタグのclass名にコロン「:」が使われていますが、どういう意味があるのでしょうか?

以下、wordpress2.9.2の管理画面のソースになります。
-----------------------------------------------------------------
<input name='updatemeta' type='submit' value='更新' class='add:the-list:meta-3::_ajax_nonce=c143df3f8b updatemeta'>
-----------------------------------------------------------------


よろしくお願いいたします。

Aベストアンサー

それをかいたひとが、どこにじょうほうをおくべきなのか、しっていたかしらないのか
さだかではないけれど、まちがったつかいかたでも、えらーがでないから、つかっちゃえぇ~てきな、
ことでめもがわりにつかっているじょうほう。

Qfor each for in

Javascript初心者です。

for each とfor inの違いを調べているのですが、どれもオブジェクトのプロパティを取る
というぐらいしか理解できていません。

お手数ですが、具体的な違いや使い方など教えていただけないでしょうか?

よろしくお願いします。

Aベストアンサー

"for each" というと、Mozilla の JavaScript1.6 で追加された独自仕様の構文でしょうか
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for_each...in

この構文はリンク先の説明によると「ECMA バージョン」が「なし」とされているので、
firefox 系統でしか使えないローカル仕様となります。
なので一般的に使用するのはおススメできません。


それは兎も角として
簡単に言えば、オブジェクトの各プロパティを繰り返し処理するのに
「名前」を使うのが "for in"
「値」を使うのが "for each"


var obj = { "愛":"それは甘く", "我が名": "オスカル" };

for (var 名前 in obj){ alert(名前) } // 「愛」と「我が名」を表示
for each (var 値 in obj){ alert(値) } // 「それは甘く」と「オスカル」を表示

// for each 構文を代替するおススメの記述
for (var 名前 in obj){ alert(obj[名前]) } // 「それは甘く」と「オスカル」を表示

"for each" というと、Mozilla の JavaScript1.6 で追加された独自仕様の構文でしょうか
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/for_each...in

この構文はリンク先の説明によると「ECMA バージョン」が「なし」とされているので、
firefox 系統でしか使えないローカル仕様となります。
なので一般的に使用するのはおススメできません。


それは兎も角として
簡単に言えば、オブジェクトの各プロパティを繰り返し処理するのに
「名前」を使うのが "for in"
「値」を使うの...続きを読む

Qfor文を使った累乗の計算方法について

質問させてください。
for文を使った累乗の計算プログラムを作っています。
数値はコマンドライン引数から取得し、0番目の数字を
i番目の数字分累乗するというものです。
ソースを途中まで作成したのですが、0乗した場合のプログラムが
よく分かりません。どなたか教えていただけないでしょうか?

public class Mondai {
public static void main(String[] args) {

//変数の初期化
int k = 0;

if ( 2 <= args.length && args.length < 3) {
//コマンドライン引数の数だけ配列を用意する
int[] num = new int[args.length];
//0,1番目のコマンドライン引数を整数に変換してnumに代入する
num[0] = Integer.parseInt(args[0]);
k = num[0];
k *= k;
num[1] = Integer.parseInt(args[1]);

//num[1]の掛け算をnum[1]回繰り返す
for (int i = 0; i < num[1] -2; i++) {
k *= num[0];
}
System.out.println("\"" + num[0] +"の" + num[1] + "乗は"+ k + "\"");
if(num[1] == 0) {
System.out.println("\"" + num[0] +"の" + num[1] + "乗は1\"");
}
//args.length <= 1の条件の時
} else if(args.length <= 1) {
System.out.println("引数が足りないため累乗の計算ができません。");
//指定された条件以外の時
} else {
System.out.println("引数が多すぎるため累乗の計算ができません。");
}
}
}

質問させてください。
for文を使った累乗の計算プログラムを作っています。
数値はコマンドライン引数から取得し、0番目の数字を
i番目の数字分累乗するというものです。
ソースを途中まで作成したのですが、0乗した場合のプログラムが
よく分かりません。どなたか教えていただけないでしょうか?

public class Mondai {
public static void main(String[] args) {

//変数の初期化
int k = 0;

if ( 2 <= args.length && args.length < 3) {
//コマンドライン引数の数だけ配列を用意する
int[] n...続きを読む

Aベストアンサー

前者の方は以下のようなことを仰っているのです。

public static void main(String[] args) {

int original = Integer.parseInt(args[0]);
int volume = Integer.parseInt(args[1]);

int result = 1;

for (int i = 0; i < volume; i++) {
result *= original;
}

System.out.println(original + "の" + volume + "乗は" + result);

}

いきなりプログラムを書き始めるより、まずは処理フローを明確にすることが先決です。

Qfor文を使わずバイナリファイルから目的のデータを読む方法

バイナリファイルを読み込んで、目的のデータまでfor文を使っているのですが、もっと効率良く目的のデータを読むことはできないのでしょうか?

for (int a=0 ; a < 36 ; a++)
{
bytedata = (byte)fi.read();
}

よろしくお願いします。

Aベストアンサー

これでどうですか?

FileInputStream fi = new FileInputStream("a.dat");
fi.skip(4*35); // int のバイト数(4) * 読み飛ばす要素数
int data = fi.read();
System.out.print(Integer.toHexString(data));

* オマケ
BufferedInputStream を使って以下のようにファイルを開いた方が速くなるかも知れません。(これ以上の読み書きをする場合は特に)。

BufferedInputStream fi = new BufferedInputStream(new FileInputStream("a.dat"));


人気Q&Aランキング

おすすめ情報