/*------------------- ex11_1.java タイピング・ゲーム --------------------*/ import java.util.Scanner; import java.util.Random; class ex11_1 { static String txt, usr; public static void main(String[] args) { int res = 0; Scanner stdIn = new Scanner(System.in); System.out.println(" --- タイピング・ゲーム --- "); for (int i = 0; i < 5; i++) { create(); // 問題作成メソッド呼び出し System.out.print(" Q" + (i+1) + ":[ " + txt + " ]\n >"); usr = stdIn.nextLine(); res += chk(); // 回答チェック・メソッド呼び出し(ミスならresを1増やす) } disp(res); // 評価メッセージ表示メソッド呼び出し } // 問題作成メソッド static void create() { String msg = "abcdefghijklmnopqrstuvwxyz"; // 問題の種となるアルファベット26文字 Random rnd = new Random(); int n = 5 + rnd.nextInt(16); // 問題文の長さ決定(5〜20文字) txt = ""; for (int i = 0; i < n; i++) { txt += msg.charAt(rnd.nextInt(26)); // 問題文決定:種の任意の位置から1文字をtxtに追加 } } // 回答チェック(文字列照合)メソッド static int chk() { if (txt.length() != usr.length()) { // 問題文txtとユーザー入力文usrの文字長比較 return 1; // 文字長が異なればミスなので,ミス回数+1で返却 } for (int i = 0; i < usr.length(); i++) { if ( txt.charAt(i) == usr.charAt(i) ) { // 文字照合 i++; } else { return 1; // 一文字でも違えばミスなので,ミス回数+1で返却 } } return 0; // チェックに通れば正解なので,ミス回数+0で返却 } // 評価メッセージ表示メソッド static void disp(int res) { switch(res) { // res の値がミスした問題の数に該当 case 0: System.out.println("いいタイピングだったな.次も期待しているぞ"); break; case 1: System.out.println("なかなかやるな.ミスをなくすことを心がけよ"); break; case 2: System.out.println("まぁまぁかな.精進してもっと上を目指せよ"); break; case 3: System.out.println("ちょっとひどいな.もう少し頑張るべきだな"); break; case 4: System.out.println("まさかな.これほど出来が悪いとは…"); break; case 5: System.out.println("駄目ダメだな.話にならん…."); break; default:System.out.println("Error:予期せぬエラー"); break; } } }