実技(Javaプログラミング実習1)③

1.Pairプログラミングによる演習
2.Pairプログラミングによる演習
Q.厚さ1mmの紙がある。これを2つに折り曲げると2mmになる。もう一度折り曲げると4mm….
この作業を繰り返すと何回折り曲げると月に届くか計算せよ。なお月までの距離は384,400 kmである。

[実行例]
1回折り曲げた(2mm)
2回折り曲げた(4mm)
3回折り曲げた(8mm)
4回折り曲げた(16mm)
5回折り曲げた(32mm)
以下略
?回折り曲げたら月に到達します。

[解答例]

public class Moon{
	public static void main(String[] args){
		final long DIST=384400000000L;
		long thick=1L;
		int count=0;
		while(thick<DIST){
			count++;
			thick*=2;
			System.out.println(count+"回折り曲げた("+thick+"mm)");
		}
		System.out.println(count+"回折り曲げたら月に到達します。");		
	}
}

3.2重for文
4.条件分岐と繰り返しの練習

public class Kazuate{
	public static void main(String[] args){
		System.out.println("[数当てゲーム]");
		int ans=new java.util.Random().nextInt(10);
		for(int i=0;i<5;i++){
			System.out.print("0~9の数字を入力してください>");
			int num=new java.util.Scanner(System.in).nextInt();
			if(num==ans){
				System.out.println("アタリ!");
				break;
			}else{
				System.out.println("違います");
			}
		}
		System.out.println("ゲームを終了します");
	}
}

5.条件分岐と繰り返しの練習
以下の処理を実現せよ(正解ナンバーは1~100のランダムとする)
数あてゲーム[1-100]
いくつかな?>50
もっと上だよ。
いくつかな?>75
もっと上だよ。
いくつかな?>90
もっと下だよ。
いくつかな?>80
もっと上だよ。
いくつかな?>85
もっと上だよ。
いくつかな?>88
正解!
6回で正解しました

[解答例]

public class Kazuate2{
	public static void main(String[] args){
		int max=100; //最大値
		System.out.println("数あてゲーム[1-"+max+"]");
		int ans=new java.util.Random().nextInt(max)+1;
		int count=0;
		while(true){
			count++;
			System.out.print("いくつかな?>");
			int num=new java.util.Scanner(System.in).nextInt();
			if(num > ans){
				System.out.println("もっと下だよ。");
			}else if(num < ans){
				System.out.println("もっと上だよ。");
			}else{
				System.out.println("正解!");
				System.out.println(count+"回で正解しました");
				break;
			}
		}
	}
}