while文

演習詳細

オプション課題

オプション課題(, , )

オプション課題1

下記のプログラムは、1 からの整数を順に足していき(1+2+3+...+n)、その和が 100を超えない最大の nを求めるプログラムである。(1+2+3+4+...+n ≦ 100)
(和が 100を超えるまで順に数値を足し、和が 100を超えた時点で最後の数値を出力する。)
int n = 1;
int sum = 0;

while(sum+n <= 100){      //今までの和とnを足し、100以下ならループ
    sum = sum + n;        //現在の和に n を足す
    n = n + 1;            //n を一つ増やす
}

System.out.println(n - 1); //一つ前の n を出力
上記例を参考に、1 からの奇数を順に足していき(1+3+5+7+...+n)、その和が 200を超えない最大の n を求めるプログラム OKadai060601.java を作成せよ。(1+3+5+7+...+n ≦ 200)

OKadai060601の実行例

(コンソール画面)
27

オプション課題2

下記のサンプルプログラム(Add.java)は、標準入力(キーボード)より 0 が与えられるまで、与えられた数値を繰り返し足し算するプログラムである。
import java.io.*;
public class Add {
    public static void main(String[] args) throws IOException {
        String s;
        int sum = 0;
        int n = 1;
        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

        while(n != 0){                  // a が 0 以外ならループする
            System.out.println("数値を入力");
            s = buf.readLine();         //入力を標準入力より取得
            n = Integer.parseInt(s);    //入力文字列をint型に変換

            sum = sum + n;
            System.out.println(" = "+sum);
        }                              //while に戻る
    }
}
上記サンプルプログラムを参考に、標準入力(キーボード)より 1 が与えられるまで、与えられた数値を繰り返し掛け算を行うプログラム OKadai060602.java を作成せよ。

OKadai060602の実行例 (2 x 3 x 2 x 1 = 12)

(コンソール画面)
数値を入力
2
=2
数値を入力
3
=6
数値を入力
2
=12
数値を入力
1
=12

オプション課題3

以下のサンプルプログラム(OKadai06063.java)は、コンピュータが計算する 1から 10までの数を予想して当てようとするプログラムである。
whileの条件は常にtrueのため、プログラムの終了は Ctrl+C で行う。
/*
  プログラム名: OKadai060603.java
  作成日: 2016/06/06
  作成者: ここには学籍番号と自分の名前を書く
  概要: どのようなプログラムなのかを書く
*/
import java.io.*;
public class OKadai060603 {
    public static void main(String[] args) throws IOException {

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

        //計算のための適当な初期値を設定
        int xn = 0;
        int a=2061;
        int b=7;
        int c=65536;

        int computer;  //コンピュータの数値
        int guess; //ユーザの予想

        while(true){ //常にtrueのため無限ループ

            xn=((xn*a)+b) % c;         //ごちゃごちゃと計算して
            computer = (xn % 10) + 1;  //値の範囲を1〜10までに制限

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

            System.out.println("Computer's number was: " + computer); //コンピュータ側の数値

            if(computer == guess){
                System.out.println("正解!");           //あたり
            }

        } //whileに戻る

    } //mainの終り

}//class OKadai060603 の終り

上記のプログラムは、whileが常に"true"のため、永遠に終了しない。
次の数値の予想が的中した時にプログラムが終了するように、while文の条件を修正し、OKadai060603.java を完成させよ。

mackin