猜字母游戏


import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

/*
 猜字母游戏
	游戏需求:
      随机生成5个不同的大写字母    AFCHE
      用户猜字母           		 ABDCE
      输出: 3个字母正确,其中位置正确的有2个

 步骤:
        1.随机生成5个不同字符  -> 字符数组
        2.控制台输入 -> Stirng -> 拆解 -> 字符数组
        3.两个字符数组相对比 -> 字符相同个数,位置相同个数
        4.如果不相等,重复2和3
 */
public class demo07 {
    public static void main(String[] args) {
        char[] answer = zifu();
        System.out.println(Arrays.toString(answer));
        Scanner sc = new Scanner(System.in);
        System.out.println("猜");
        while (true) {

            String str = sc.next();
            char[] haha = guess(str);// 存用户输入的字符数组
            int[] hehe = campare(answer, haha);// 返回的是数组
            System.out.println("字符相同数" + hehe[0] + "位置相同数" + hehe[1]);
            if (hehe[1] == 5) {
                break;
            }
        }
    }

    // 比较两个字符数组
    public static int[] campare(char[] zifu, char[] guess) {
        // 创建一个长度为2的数组保存相同的字符个数与位置个数
        int[] arr = new int[2];
        for (int i = 0; i < zifu.length; i++) {
            for (int j = 0; j < guess.length; j++) {
                if (zifu[i] == guess[j]) {
                    arr[0]++;
                    if (i == j) {
                        arr[1]++;
                    }
                }
            }
        }
        return arr;
    }

    public static char[] zifu() {

        char[] b = new char[5];
        for (int i = 0; i < b.length; i++) {
            b[i] = (char) (Math.random() * 26 + 'A');
            for (int j = 0; j < i; j++) {
                if (b[j] == b[i]) {
                    i--;
                    break;
                }
            }
        }
        return b;
    }

    // 目的 返回用户输入的字符数组
    public static char[] guess(String str) {
        char[] b = new char[5];
        for (int i = 0; i < b.length; i++) {
            b[i] = str.charAt(i);// charAt()方法返回指定索引位置的char值
        }
        return b;

    }
}

上一篇:Wunder Fund Round 2016 (Div. 1 + Div. 2 combined) B. Guess the Permutation


下一篇:力扣(leetcode) 374. 猜数字大小 (二分法)