whileステートメント
日本語 | ~の間命令 |
英語 | while statement |
ふりがな | ほわいるすてーとめんと、わいるすてーとめんと |
フリガナ | ホワイルステートメント、ワイルステートメント |
whileを使用した繰り返し文。
ステートメントの一種。
予約語「while」を用いたステートメント。
「ループ」を行うステートメントのひとつ。
「while( 評価式 )ステートメント」という形式で記述する。
処理の順番は「評価式」→「ステートメント」→「評価式」→……→「ステートメント」→「評価式」となる。
まず「評価式」の評価を行い、その結果がtrueの場合、「ステートメント」が処理される。
その後、再び「評価式」の評価を行い、その結果がtrueの場合、再び「ステートメント」が処理される
その繰り返しによって、ループが行われる。
「評価式」には「式ステートメント」を記述することができる。
ただし、式ステートメントはboolean型を返す式でなければならない。
省略は不可能。
「ステートメント」にはステートメントを記述することができる。
通常はブロックを記述する。
ステートメントには「breakステートメント」「continueステートメント」を記述することができる。ラベルを指定しない場合、共にこのwhileステートメントがターゲットとなる。
whileステートメントは、必ず最初に「評価式」が処理される。
評価の前に「ステートメント」を必ず処理させたい場合には「doステートメント」を使用する。
whileステートメントの使用方法については以下の項目も参照のこと。
・while
・do-while
・break(breakステートメント)
・continue(continueステートメント)
ステートメントの一種。
予約語「while」を用いたステートメント。
「ループ」を行うステートメントのひとつ。
「while( 評価式 )ステートメント」という形式で記述する。
処理の順番は「評価式」→「ステートメント」→「評価式」→……→「ステートメント」→「評価式」となる。
まず「評価式」の評価を行い、その結果がtrueの場合、「ステートメント」が処理される。
その後、再び「評価式」の評価を行い、その結果がtrueの場合、再び「ステートメント」が処理される
その繰り返しによって、ループが行われる。
「評価式」には「式ステートメント」を記述することができる。
ただし、式ステートメントはboolean型を返す式でなければならない。
省略は不可能。
「ステートメント」にはステートメントを記述することができる。
通常はブロックを記述する。
ステートメントには「breakステートメント」「continueステートメント」を記述することができる。ラベルを指定しない場合、共にこのwhileステートメントがターゲットとなる。
whileステートメントは、必ず最初に「評価式」が処理される。
評価の前に「ステートメント」を必ず処理させたい場合には「doステートメント」を使用する。
whileステートメントの使用方法については以下の項目も参照のこと。
・while
・do-while
・break(breakステートメント)
・continue(continueステートメント)
参考サイト
- (参考サイトはありません)
// Sample.java
public class Sample
{
public static void main( String[] args )
{
// 最も単純なwhileステートメント。
// while( true );
// ただし、無限ループになるので実際には意味がありません。
int iW1 = 0;
// iW1を1ずつ足していき、5以下の間繰り返します。
// これが評価式。
// ↓↓↓↓
while( iW1 < 5 )/* ここから「ステートメント」→ */
{
System.out.print( iW1 + ", " );
++iW1;
}// ←ここまで「ステートメント」。
System.out.println();
// 0, 1, 2, 3, 4,
// このように、評価式がtrueの間、ループし続けます。
// whileステートメントは「評価式」→「ステートメント」→「評価式」→……
// ……→「ステートメント」→「評価式」の順に処理されます。
while( evaluate() )
{
System.out.println( "ステートメント" );
}
// 評価式 : 0
// ステートメント
// 評価式 : 1
// ステートメント
// 評価式 : 2
// このように、評価式で始まり、評価式で終わります。
// 「評価式」は、trueを返す式ステートメントでなければいけません。
// while( 1 );
// コンパイルエラー:
// 型の不一致: int から boolean には変換できません。
// 評価式を省略することはできません。
// while();
// コンパイルエラー:
// トークン ")" に構文エラーがあります。正しくは "+", "-", "--", "++", "boolean", "void", "byte", "short", "int", "long", "char", "float", "double", "(", "true", "false", "IntegerLiteral", "LongLiteral", "FloatingPointLiteral", "DoubleLiteral", "CharacterLiteral", "StringLiteral", "null", "~", "!", "super", "this", "new", "Identifier" です。
iW1 = 0;
// whileの後ろの部分が「ステートメント」です。
while( iW1 < 5 )/* ここから「ステートメント」→ */ System.out.print( ( iW1++ ) + ", " ); // ←ここまで「ステートメント」。
System.out.println();
// 0, 1, 2, 3, 4,
// 通常は、「ステートメント」にはブロックを記述します。
iW1 = 0;
while( iW1 < 5 )/* ここから「ステートメント」→ */
{
System.out.print( iW1 + ", " );
++iW1;
}// ←ここまで「ステートメント」。
System.out.println();
// 0, 1, 2, 3, 4,
int i;
iW1 = 0;
// 「ステートメント」にはステートメントで
// あれば何でも記述できます。 ↓↓↓↓代入ステートメントです。
while( iW1 < 5 )/* ここから「ステートメント」→ */ i = 100; // ←ここまで「ステートメント」。
// 記述できるステートメントはひとつです。
// 以下のように「,」で複数記述することはできないため、通常は
// ブロックを記述します。
// while( iW1 < 5 ) i = 100, ++i;
// コンパイルエラー:
// トークン "," に構文エラーがあります。正しくは ";" です。
{
// ステートメントを省略することはできません。
// while( true )/* ここから「ステートメント」→ */ // ←ここまで「ステートメント」。
// コンパイルエラー:
// トークン "}" に構文エラーがあります。正しくは "{" です。
}
// (ブロックで囲んでいるのは、これがないと以下のwhileがステートメントと
// なるからです)
// 以下のように、評価式が常にtrueだと無限ループになります。
while( true )
{
// ここでwhileから抜ける処理(break、return、throw等)が
// ないと、プログラムが終了しません。
System.out.println( "while無限ループ" );
break;
}
// while無限ループ
}
// 処理順をチェックするためのフィールド。
static int count = 0;
// 処理順をチェックするためのメソッド。
private static boolean evaluate()
{
System.out.println( "評価式 : " + count );
++count;
if( count == 3 )
{
// countが3になったらfalseを返します。
return false;
}
return true;
}
}
public class Sample
{
public static void main( String[] args )
{
// 最も単純なwhileステートメント。
// while( true );
// ただし、無限ループになるので実際には意味がありません。
int iW1 = 0;
// iW1を1ずつ足していき、5以下の間繰り返します。
// これが評価式。
// ↓↓↓↓
while( iW1 < 5 )/* ここから「ステートメント」→ */
{
System.out.print( iW1 + ", " );
++iW1;
}// ←ここまで「ステートメント」。
System.out.println();
// 0, 1, 2, 3, 4,
// このように、評価式がtrueの間、ループし続けます。
// whileステートメントは「評価式」→「ステートメント」→「評価式」→……
// ……→「ステートメント」→「評価式」の順に処理されます。
while( evaluate() )
{
System.out.println( "ステートメント" );
}
// 評価式 : 0
// ステートメント
// 評価式 : 1
// ステートメント
// 評価式 : 2
// このように、評価式で始まり、評価式で終わります。
// 「評価式」は、trueを返す式ステートメントでなければいけません。
// while( 1 );
// コンパイルエラー:
// 型の不一致: int から boolean には変換できません。
// 評価式を省略することはできません。
// while();
// コンパイルエラー:
// トークン ")" に構文エラーがあります。正しくは "+", "-", "--", "++", "boolean", "void", "byte", "short", "int", "long", "char", "float", "double", "(", "true", "false", "IntegerLiteral", "LongLiteral", "FloatingPointLiteral", "DoubleLiteral", "CharacterLiteral", "StringLiteral", "null", "~", "!", "super", "this", "new", "Identifier" です。
iW1 = 0;
// whileの後ろの部分が「ステートメント」です。
while( iW1 < 5 )/* ここから「ステートメント」→ */ System.out.print( ( iW1++ ) + ", " ); // ←ここまで「ステートメント」。
System.out.println();
// 0, 1, 2, 3, 4,
// 通常は、「ステートメント」にはブロックを記述します。
iW1 = 0;
while( iW1 < 5 )/* ここから「ステートメント」→ */
{
System.out.print( iW1 + ", " );
++iW1;
}// ←ここまで「ステートメント」。
System.out.println();
// 0, 1, 2, 3, 4,
int i;
iW1 = 0;
// 「ステートメント」にはステートメントで
// あれば何でも記述できます。 ↓↓↓↓代入ステートメントです。
while( iW1 < 5 )/* ここから「ステートメント」→ */ i = 100; // ←ここまで「ステートメント」。
// 記述できるステートメントはひとつです。
// 以下のように「,」で複数記述することはできないため、通常は
// ブロックを記述します。
// while( iW1 < 5 ) i = 100, ++i;
// コンパイルエラー:
// トークン "," に構文エラーがあります。正しくは ";" です。
{
// ステートメントを省略することはできません。
// while( true )/* ここから「ステートメント」→ */ // ←ここまで「ステートメント」。
// コンパイルエラー:
// トークン "}" に構文エラーがあります。正しくは "{" です。
}
// (ブロックで囲んでいるのは、これがないと以下のwhileがステートメントと
// なるからです)
// 以下のように、評価式が常にtrueだと無限ループになります。
while( true )
{
// ここでwhileから抜ける処理(break、return、throw等)が
// ないと、プログラムが終了しません。
System.out.println( "while無限ループ" );
break;
}
// while無限ループ
}
// 処理順をチェックするためのフィールド。
static int count = 0;
// 処理順をチェックするためのメソッド。
private static boolean evaluate()
{
System.out.println( "評価式 : " + count );
++count;
if( count == 3 )
{
// countが3になったらfalseを返します。
return false;
}
return true;
}
}
// Sample.java public class Sample { public static void main( String[] args ) { // 最も単純なwhileステートメント。 // while( true ); // ただし、無限ループになるので実際には意味がありません。 int iW1 = 0; // iW1を1ずつ足していき、5以下の間繰り返します。 // これが評価式。 // ↓↓↓↓ while( iW1 < 5 )/* ここから「ステートメント」→ */ { System.out.print( iW1 + ", " ); ++iW1; }// ←ここまで「ステートメント」。 System.out.println(); // 0, 1, 2, 3, 4, // このように、評価式がtrueの間、ループし続けます。 // whileステートメントは「評価式」→「ステートメント」→「評価式」→…… // ……→「ステートメント」→「評価式」の順に処理されます。 while( evaluate() ) { System.out.println( "ステートメント" ); } // 評価式 : 0 // ステートメント // 評価式 : 1 // ステートメント // 評価式 : 2 // このように、評価式で始まり、評価式で終わります。 // 「評価式」は、trueを返す式ステートメントでなければいけません。 // while( 1 ); // コンパイルエラー: // 型の不一致: int から boolean には変換できません。 // 評価式を省略することはできません。 // while(); // コンパイルエラー: // トークン ")" に構文エラーがあります。正しくは "+", "-", "--", "++", "boolean", "void", "byte", "short", "int", "long", "char", "float", "double", "(", "true", "false", "IntegerLiteral", "LongLiteral", "FloatingPointLiteral", "DoubleLiteral", "CharacterLiteral", "StringLiteral", "null", "~", "!", "super", "this", "new", "Identifier" です。 iW1 = 0; // whileの後ろの部分が「ステートメント」です。 while( iW1 < 5 )/* ここから「ステートメント」→ */ System.out.print( ( iW1++ ) + ", " ); // ←ここまで「ステートメント」。 System.out.println(); // 0, 1, 2, 3, 4, // 通常は、「ステートメント」にはブロックを記述します。 iW1 = 0; while( iW1 < 5 )/* ここから「ステートメント」→ */ { System.out.print( iW1 + ", " ); ++iW1; }// ←ここまで「ステートメント」。 System.out.println(); // 0, 1, 2, 3, 4, int i; iW1 = 0; // 「ステートメント」にはステートメントで // あれば何でも記述できます。 ↓↓↓↓代入ステートメントです。 while( iW1 < 5 )/* ここから「ステートメント」→ */ i = 100; // ←ここまで「ステートメント」。 // 記述できるステートメントはひとつです。 // 以下のように「,」で複数記述することはできないため、通常は // ブロックを記述します。 // while( iW1 < 5 ) i = 100, ++i; // コンパイルエラー: // トークン "," に構文エラーがあります。正しくは ";" です。 { // ステートメントを省略することはできません。 // while( true )/* ここから「ステートメント」→ */ // ←ここまで「ステートメント」。 // コンパイルエラー: // トークン "}" に構文エラーがあります。正しくは "{" です。 } // (ブロックで囲んでいるのは、これがないと以下のwhileがステートメントと // なるからです) // 以下のように、評価式が常にtrueだと無限ループになります。 while( true ) { // ここでwhileから抜ける処理(break、return、throw等)が // ないと、プログラムが終了しません。 System.out.println( "while無限ループ" ); break; } // while無限ループ } // 処理順をチェックするためのフィールド。 static int count = 0; // 処理順をチェックするためのメソッド。 private static boolean evaluate() { System.out.println( "評価式 : " + count ); ++count; if( count == 3 ) { // countが3になったらfalseを返します。 return false; } return true; } }