メンバーをコマンドライン引数で登録するとペアプロの組み合わせをランダムに生成するジェネレータを作成しよう。メンバーが奇数の場合は「先生」を加えて偶数にすること。

[実行例1]
偶数人で実行

$ java PairPro 佐藤 山田 鈴木 田中
{N.山田,D.鈴木}
{N.田中,D.佐藤}

[実行例2]
奇数人で実行

$ java PairPro 佐藤 山田 鈴木 田中 安倍
{N.田中,D.安倍}
{N.佐藤,D.鈴木}
{N.先生,D.山田}

[実行例3]
引数なしで実行した場合はメッセージが表示される

$ java PairPro
引数にメンバーを入れてもう一度実行してください。

[解答例]

import java.util.*;

public class PairPro {
	public static void main(String[] args) {
		if(args.length>0){
			//members配列をargsの参照で作成
			String[] members=args;
			if(args.length %2!=0){
				//奇数の場合は要素数を一つ増やした配列を指すようにする
				members=new String[args.length+1];
				for(int i=0;i<args.length;i++){
					//argsにある分はそのまま代入
					members[i]=args[i];
				}
				//配列の最後に先生を追加
				members[members.length-1]="先生";
			}
			shuffleArr(members);
			printPair(members);
		}else{
			System.out.println("引数にメンバーを入れてもう一度実行してください。");
		}
	}
	//配列シャッフル
	static void shuffleArr(String[] members){
		for(int i=0;i<members.length-1;i++){
			int index=new Random().nextInt(members.length-i);
			String temp=members[index];
			members[index]=members[members.length-1-i];
			members[members.length-1-i]=temp;
		}
	}
	//表示
	static void printPair(String[] members){
		for(int i=0;i<members.length;i+=2){
			System.out.printf("{N.%s,D.%s}%n",members[i],members[i+1]);
		}
	}	
}