package Practice;
import java.util.Arrays;
import java.util.Scanner;
public class RandomChar {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("输入字符数组长度:");
int len = sc.nextInt();
int num = 0; // 游戏输入次数统计
int score = 100;// 游戏总分
char[] arr = randomChar(len); // 调用生成随机字符数组方法
System.out.println(Arrays.toString(arr)); // 作弊
char[] inputArr = new char[arr.length];
System.out.println("猜字符游戏开始!!退出请输入0");
while (true) {
System.out.println("输入你猜测的字符: ");
/*
* 疑问:如果不用下面接受用户输入的代码 ,是否有其他方法接受用户输入的字符数组?? 可否直接接受字符数组?
*/
String str = sc.next(); // 获取用户输入
inputArr = str.toCharArray(); // 将字符串转换成字符数组
if (0 == sc.nextInt()) { System.out.println("退出游戏"); break; }//退出游戏
int[] compareNum = compare(arr, inputArr);
if (compareNum[0] == arr.length && compareNum[1] == arr.length) { // ????????
int score1 = score - num;
System.out.println("全部猜对了!得分: " + score1 + "分!");
break;
} else {
num++;
System.out.println("猜测次数: " + num + "次。 " + "正确元素有:" + compareNum[1] + "个,正确位置有:" + compareNum[0] + "个");
}
}
}
// 生成随机字符数组
public static char[] randomChar(int len) {
char[] arrChar = new char[len]; // 调用输入的字符数组长度参数
for (int i = 0; i < arrChar.length; i++) { // 根据输入的字符数组长度生成随机字符数组
arrChar[i] = (char) (Math.random() * 26 + 'a'); // 生成随机字符数组
}
return arrChar;
}
// 比较生成的随机字符数组和输入的随机字符数组
public static int[] compare(char[] arr, char[] inputArr) {
int[] result = new int[2]; // 设置"存钱罐"
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < inputArr.length; j++) {
if (arr[i] == inputArr[j]) { // 比较生成和输入的字符数组中元素是否一致
result[1]++;
if (i == j) { // 比较生成和输入的字符数组中元素的[索引编号]是否一致
result[0]++;
}
break;
}
}
}
return result;
}
}
if (compareNum[0] == arr.length && compareNum[1] == arr.length) {
此处为何如此判断,才能对比生成和输入的字符数组,有疑问,待解决