Q1
2つの数値を読み込んでその小さい方の値を表示せよ。(if文を使う)
[実行例]
整数A:3 [エンター]
整数B:5 [エンター]
小さい方の数は3です。
[解答例]

package javalessons;
import java.util.Scanner;
public class Jn1 {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.print("整数A:");
		int a=scan.nextInt();
		System.out.print("整数B:");
		int b=scan.nextInt();
		int min;
		if(a<b){
			min=a;
		}else{
			min=b;
		}
		System.out.println("小さい方の数は"+min+"です。");
		scan.close();
	}
}

条件演算子

上記の例題はある条件(a<b)によって変数minに代入する値をaかbかに決める処理である。
こういった場合は条件演算子(三項演算子)を使ってよりシンプルにかける。

int min=a < b ? a:b;

条件演算子を用いるとQ1は以下のように書ける。

import java.util.Scanner;
public class Jn1_1 {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.print("整数A:");
		int a=scan.nextInt();
		System.out.print("整数B:");
		int b=scan.nextInt();
		int min=a<b ? a:b;
		System.out.println("小さい方の数は"+min+"です。");
		scan.close();
	}
}

if〜else文がなくなってシンプルになったのがわかる。

上記の例ではminに一度代入しているがそれすらも省略できる。
(結合則の優先度が+よりも低いので今回はカッコでくくる必要あり)

import java.util.Scanner;
public class Jn1_1 {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.print("整数A:");
		int a=scan.nextInt();
		System.out.print("整数B:");
		int b=scan.nextInt();
		System.out.println("小さい方の数は"+(a<b ? a:b)+"です。");
		scan.close();
	}
}

条件演算子はシンプルに記述できるので慣れてくるととても便利だ。どんどん使っていこう。

Q2.0~9までの値をランダムに生成し、それが偶数か奇数かを判定せよ。
[実行例]
7は奇数です。

[解答例]

public class Jn1_2 {
	public static void main(String[] args) {
		Random rand = new Random();
		int num = rand.nextInt(10);
		System.out.printf("%dは%sです", num, num % 2 == 0 ? "偶数" : "奇数");
	}
}