while文制御
if型のループ
ループステートメントにはfor以外にもあると言いました
その一つがwhileステートメントです
これは、書式自体はforよりも簡素です
ループに関してはforとまったく同じで、単体のステートメントかコードブロックを繰り返し実行します
書式はifと同じで、式を評価して真の間ループします
while (expr) statement;
最初から式が偽であった場合は一度もステートメントは実行されません
forよりも無限ループ作成には向いていると思われます
class test {
public static void main(String args[]) {
int count = 0;
while (count <= 10000) {
System.out.print("count = " + count + "\r");
count++;
}
}
}
ただしwhileはforのようにexprを省略できません
無限ループ作成には、通常trueを使います
無限ループを作成した場合は、やはりカスタムで抜け出す道を作る必要があります
class test {
public static void main(String args[]) {
int count = 0;
while (true) {
System.out.print("count = " + count + "\r");
count++;
if (count > 10000) break;
}
}
}
whileは式がtrueの間ループするのだから、あらかじめtrueを指定すれば無限ループになるという仕掛けです
doステートメント
最後のループステートメントはdoステートメントです
これは、forとwhileと比べて特徴的な部分が一つあります
それはステートメントを実行してから評価するという部分です
これまでforやwhileでは、ステートメントの開始時に式を評価したため
最初から偽(false)の場合は1度も実行されないという問題がありました
これは、ifステートメントを使って避ける方法もありますが
そのようなことをするよりもdoステートメントでループさせたほうが作業も楽で簡素です
do { statement } while (expr);
statementは単体であれば中括弧は必要ありませんが、このときのwhileはdoの一部です
通常のwhileステートメントとの見分けをつけるのに、多くのプログラマは意図的に括弧を使ってインデントさせます
class test {
public static void main(String args[]) {
int count = 10000;
do {
System.out.print("count = " + count + "\r");
count++;
} while (count < 10000);
}
}
doはステートメントを実行してから式を評価するので、この場合でも1度だけステートメントを実行します
doステートメントは必ず1度はステートメントを実行するというのがポイントです
プロジェクトの一場面の作業を効率的にしてくれるかもしれません
while (expr) statement;
exprが真の間 statementを実行します
expr - 必ず指定します。評価する条件式を指定します
statement - exprがtrue(真)のときに実行するステートメントを指定します
do { statement } while (expr)
ステートメントを実行してあとに式を評価します
式が真であれば do まで戻ってステートメントを繰り返します
statement - exprがtrue(真)の間実行するステートメントを指定します
expr - 必ず指定します。評価する条件式を指定します