また,繰り返しゲームをプレイするプログラムを作るか,1回だけゲームをプ レイするプログラムにするかが問題になる.プログラムの作成しやすさを考え て,1回だけゲームをプレイするプログラムにしてみよう.
ktanaka@ux102> java Kadai1019 Guess a number 入力を促す1行(メッセージは任意を表示) 512 数字 HIGH メッセージは「HIGH」か「LOW」 256 LOW 384 HIGH 320 HIGH 288 LOW 304 HIGH 296 LOW 300 8 回答に要した回数を表示
プログラム全体の流れは以下のようになるはずである.
// Randomクラスを使うために必要 import java.util.*;とした上で,
// 1-10000までの乱数を作成
int secret=(new Random()).nextInt(10000)+1;
のようにRandom
クラスを使う.なお,一つのプログラムで何度も乱数を使う時は,
// 乱数の元となるオブジェクトを作成
Random r=new Random();
// 1-1000までの乱数を作成
int secret1=r.nextInt(1000)+1;
// 1-100までの乱数を作成
int secret2=r.nextInt(100)+1;
のようにすると良い.
サンプルを示す.
// Randomクラスを使うために必要
import java.util.*;
class ShowRandom10000{
public static void main(String[] args){
// 乱数の元となるオブジェクトを作成
Random r=new Random();
for(int i=0;i<10;i++){
// 1-10000までの乱数を作成
int secret=r.nextInt(10000)+1;
System.out.println("Secret Number is "+secret);
}
}
}
/home08/ktanaka/bin/report1019 1を実行する.プログラムのコンパイル実行をチェックした上で,プログラムを コピーし,実行結果を記録する.なお,このプログラムを通っても正しくない プログラムはありうる.その場合は減点されることもある.
import java.io.*; // 入力に関するクラスを使う時は必要
class SumAll{
// throws IOException で内部で入出力エラーが起きる可能性があることを示す
public static void main(String[] args) throws IOException{
// 入力をするためには,System.inからBufferedReaderを作らなくてはいけない
BufferedReader d=new BufferedReader(new InputStreamReader(System.in));
int sum=0;
// for文の初期化,終了条件,繰り返し部分を省略して書くこともできる
// この場合は, break によって明示的に抜けないと無限の繰り返し
// になる
for(;;){
// 1行読み込んで整数に変換する
int num=Integer.parseInt(d.readLine());
// 入力した数が負または0の時は抜ける。
if(num<=0) break;
sum=sum+num;
}
System.out.println(sum);
}
}
これは,キーボード(標準入力)から数を読み込んでいって,負の数が出たら
抜けて,それまでの和を表示するプログラムである.
なお,入力をおこなうプログラムでは,BufferedReader型のオブジェクトは プログラムの最初で1度だけ作成して,それを使い続けるようにするように 書くのが良い.
import java.io.*; // 入力に関するクラスを使う時は必要
class SumAll{
// throws IOException で内部で入出力エラーが起きる可能性があることを示す
public static void main(String[] args) throws IOException{
// 入力をするためには,System.inからBufferedReaderを作らなくてはいけない
int sum=0;
// for文の初期化,終了条件,繰り返し部分を省略して書くこともできる
// この場合は, break によって明示的に抜けないと無限の繰り返し
// になる
for(;;){
BufferedReader d=new BufferedReader(new InputStreamReader(System.in));
// 1行読み込んで整数に変換する
int num=Integer.parseInt(d.readLine());
// 入力した数が負または0の時は抜ける。
if(num<=0) break;
sum=sum+num;
}
System.out.println(sum);
}
}
のように何度も作ると,キーボード以外からの入力の場合に正しく読み込めない可能性がある.
なお,
class Option1019{
public static void main(String[] args){
for(int i=1;i<=10000;i++)
System.out.println(i);
}
}
というのは,冗談としては面白いが,解答としては認めない.