数当てゲーム(適当な数を入力し、その桁と数字を予測していくゲーム)

これはn桁の数を探すゲームです。適当な数を入れると桁も数字もあっていれば「Hit」としその個数が、数字はあっているが桁が異なっていれば「Blow」としてその個数が出力されます。それを繰り返すことで答えを探すことができます。このゲームを作成しなさい。答えの数は乱数を使って毎回別の答えを用意しましょう。
練習問題 - プログラミングスレまとめ in VIP

//答え
import java.util.*;

class HitBlow {
	//正解の数をランダムで作成する
	private static char[] getSeikai() {
		Random rnd = new Random();
		char[] seikai_char = new char[7];
		
		boolean zoro_flag = true; //作成された数字の中にぞろ目があればtrue
		while (zoro_flag) {
			zoro_flag = false;
			String seikai = Integer.toString(rnd.nextInt(10000));
			//System.out.println(seikai);
			seikai_char = seikai.toCharArray();
			
			for (int i=0; i < seikai_char.length; i++) {
				for (int j=i+1; j < seikai_char.length; j++) {
					if (seikai_char[i] == seikai_char[j]) zoro_flag = true;
				}
			}
		}
		
		return seikai_char;
	}
	
	public static void main(String[] args) {
		char[] seikai_char = getSeikai();

		while(true) {
			System.out.println("ぞろ目がない数を入力して下さい。");
			Scanner scan = new Scanner(System.in);
			String input = scan.next();
			char[] input_char = input.toCharArray();
			
			// hitを探す
			//正解とインプットの短い方の長さまででhitを探す
			int search_length = input_char.length;
			if (search_length > seikai_char.length) search_length = seikai_char.length;
			for (int i = 0; i < search_length; i++) {
				if (input_char[i] == seikai_char[i]) {
					input_char[i] = 'h';
				}
			}
			
			// hit以外からblowを探す
			for (int i = 0; i < input_char.length; i++) {
				if (input_char[i] != 'h') {
					for (int j = 0; j < seikai_char.length; j++) {
						if (input_char[i] == seikai_char[j]) {
							input_char[i] = 'b';
						}
					}
				}
			}
			
			int hit_count = 0;
			int blow_count = 0;
			for (char c : input_char) {
				if (c == 'h') hit_count++;
				if (c == 'b') blow_count++;
			}
			System.out.println("hit: " + hit_count);
			System.out.println("blow: " + blow_count);

			if (hit_count == seikai_char.length) {
				System.out.println("正解です!");
				break;
			}
		}
	}
}

これは面白かったです。数当て難しいですね。おかげで動作確認に時間がかかりました。