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;
}
}