Report#3(Java)

○Javaアプリケーションによるオリジナル問題作成と解答例 ●多くのJava制御文を用いてオリジナルのJavaアプリケーションによる初級問題 を作成し,模範回答例を示せ。

【プログラムと実行結果】

自主課題

コンピュータが生成する1から10までの乱数を予想して当てるプログラムを作成せよ。

【プログラム】

//★運試しゲーム★1〜10までの数字を予想しよう。
import java.io.*;
public class repo3 {
    public static void main(String[] args) throws IOException {

        //標準入力の準備
        BufferedReader buf = new BufferedReader(new
        InputStreamReader(System.in));

        int next;  //コンピュータの次の数値
        int guess; //ユーザの予想
	
        while(true){ //

            next = (int)(Math.random()*10 +1); //乱数の範囲を1〜10までに制限

            System.out.print("Your guess : ");
            guess = Integer.parseInt(buf.readLine());  //入力を標準入力より取得

            System.out.println("correct number: " + next); //乱数の表示

	    if(next != guess){
                System.out.println("guess again");           //はずれ
                
            }else{
                System.out.println("Bingo!!");     //あたり
                break; //あたりのときbreakする
            }
        }//whileに戻る


        } //mainの終り

   } //class repo3 の終り

【実行結果】

[nw0364:~/sites/java/Repo_3] j03064% java repo3
guess again
Your guess : 6
correct number: 10
guess again
Your guess : 5
correct number: 2
guess again
Your guess : 3
correct number: 4
guess again
Your guess : 8
correct number: 4
guess again
Your guess : 6
correct number: 6
Bingo!!
[nw0364:~/sites/java/Repo_3] j03064%

【考察】

●制御文について●

Javaの制御文は、ほとんどC言語と似ていました。そこで、もう一度復讐を兼ねて制御文を調べてみました。

-主な制御文-

分岐 *if文:2方向分岐 *switch文:多方向分岐
反復 *for文:指定回数反復 *while文:前判断型不定回数反復 *do-while文:後判断型不定回数反復
脱出継続 *break文:制御脱出 *continue文:スキップ
その他の制御文 *return文:現在のメソッドを終了し、呼び出し元へ制御を戻す *synchronized文:コードブロックの同期指定 *throw文:自分で例外をスローする。例外オブジェクトの生成 *try/catch/finally文:例外制御 *assert文:デバッグ用、デフォルトでは無効


●if文
if (条件式) statement;
条件式の結果が真のときにだけ、statementを実行する。 条件式で用いられるのは、二つの値を比較する関係演算子を使う。
●else文 if文に対してelseステートメントを追加することによって、より柔軟な分岐が可能になる。 elseステートメントは直前のifが偽の場合に指定ステートメントを実行する。 直前のifが真であればelseステートメントは実行さない。 つまり、ifとelseを用いて完全な二者択一分岐を簡単に作ることができる。
●for文 for文は単一のステートメントを指定回数だけ繰り返す
for ( 初期設定(省略可能) ; 条件式(省略した場合は真を返す) ; 変化式(省略可能)) 繰り返し処理;
・まず、初期設定で変数の初期化を行う。 ・ここで初期化された変数は、繰り返された回数を制御するために、つまりカウンターとして使われる。 ・初期設定はループ開始時に1度だけ実行される。 ・条件式ではif文同様に関係演算子を用いた式を評価する。 ・変化式でどのように変化していくのかを記述する。
●while文 ・書式はifと同じで、式を評価して真の間ループします
while (条件式) statement;
・whileはforのようにexprを省略できない。 ・無限ループ作成には、通常trueを使う。 ・無限ループを作成した場合は、やはりカスタムで抜け出す道を作る必要がある。
●do文 ・do文は、forやwhileと違って、ステートメントを実行してから評価する。
do { statement }while (条件式);
・statement - 条件式がtrue(真)の間実行するステートメントを指定する。 ・条件式 - 必ず指定します。評価する条件式を指定します
●switch文 ・switchは複数選択ステートメントと呼ばれ,一つの対象に対して複数の分岐が可能 ・switchは等しければ実行するが比較はできない。 ・同一の値を持つcaseを二つ以上作ることはできない。 ・caseがもつ値に等しければ、そこからswitchの最後まで実行されてしまう。そのため、一つのcaseの節には基本的に breakをつける。 ・switchには浮動小数点は指定できない。

【参考文献・URL】

・Java入門 http://www5c.biglobe.ne.jp/~ecb/java/java00.html ・JAVA言語入門 http://black.sakura.ne.jp/~third/programming/java/java.html