JavaA2Z

KAB-studio > プログラミング > JavaA2Z > whileステートメントとは

whileステートメント

日本語 ~の間命令
英語 while statement
ふりがな ほわいるすてーとめんと、わいるすてーとめんと
フリガナ ホワイルステートメント、ワイルステートメント

解説

whileを使用した繰り返し文。
ステートメントの一種。
 
予約語while」を用いたステートメント
ループ」をステートメントのひとつ。
while( 評価)ステートメント」という形式で記述する。
 
処理の順番は「評価式」→「ステートメント」→「評価式」→……→「ステートメント」→「評価式」となる。
まず「評価式」の評価い、その結果がtrueの場合、「ステートメント」が処理される。
その後、再び「評価式」の評価い、その結果がtrueの場合、再び「ステートメント」が処理される
その繰り返しによって、ループわれる。
 
評価式」には「式ステートメント」を記述することができる。
ただし、式ステートメントbooleanを返す式でなければならない。
省略は不可能。
  
ステートメント」にはステートメントを記述することができる。
通常はブロックを記述する。
ステートメントには「breakステートメント」「continueステートメント」を記述することができる。ラベルを指定しない場合、共にこのwhileステートメントがターゲットとなる。
 
whileステートメントは、必ず最初に「評価式」が処理される。
評価の前に「ステートメント」を必ず処理させたい場合には「doステートメント」を使用する。
 
whileステートメントの使用方法については以下の項目も参照のこと。
 
while
do-while
breakbreakステートメント
continuecontinueステートメント

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// 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;
    }
}
// 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;
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2006/03/10
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。