练习:[重点]猜字符游戏!!!!

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) {

此处为何如此判断,才能对比生成和输入的字符数组,有疑问,待解决



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值