学编程从做题开始(1)猜字符游戏

随机生成5位字符数组(暂定为大写字母),用户不断输入5位字符数组去猜。猜对了就可以显示出来,为了方便,未知的字符用“*”号代替。可以输入大于5位的字符,但是不能输入小于5位的字符,除了输入exit使程序停止运行。

这大概就是问题的所有内容了。

/----------------------------------

-----------------------------------

-----------------------------------

-----------------------------------

-----------------------------------

-----------------------------------

----------------------------------/

这里附上我的代码,还是新手,有好的意见可以提,觉得我写的不清楚的也可以提出来。

package *;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Guessing {
	public static void main(String[] args) {
		char[] sort=rd();//生成随机字符数组
		System.out.println("随机生成的char数组为:");
		System.out.println(sort);//字符型数组可以直接输出,这一步是用来作弊,到时候猜的时候建议注释掉
		char[] arr= {'*','*','*','*','*'};//定义一个星数组,用来隐藏未猜出的字符
		while(true) {//while循环
			String str=input();//输入猜测的字符串,并转化为char数组
			if(str.equals("EXIT")){ //如果str的内容是EXIT
				System.out.println("下次再来吧!");
				break;
			}
			char[] input=str.toCharArray();//把字符串转为字符数组
			arr=result(sort,input,arr);//实现隐藏未猜出的字符
			System.out.print(arr);//输出隐藏后的char数组
			
			System.out.println();
			if(arr[0]!='*'&&arr[1]!='*'&&arr[2]!='*'&&arr[3]!='*'&&arr[4]!='*') {
				System.out.println("恭喜你全部猜出来了!!");
				break;//如果全部竞猜出来则结束游戏
			}
		}
		System.out.println("游戏结束!");
	}
	//1.方法实现生成随机字符数组
	public static char[] rd() {
		Random rd=new Random();
		char[] arr=new char[5];
		for(int i=0;i<5;i++) {
			arr[i]=(char)(rd.nextInt(26)+65);
			for(int j=0;j<i;j++) {
				if(arr[i]==arr[j]) {//避免重复
					i--;
					break;
				}
			}
		}
		return arr;
	}
	//2.方法实现输入字符串转化为字符数组
	public static String input() {
		Scanner scan=new Scanner(System.in);
		System.out.println("请输入5位字符:");
		String str = scan.next().toUpperCase();
		while(str.length()<5&&!str.equals("EXIT")) {//检测输入是否合法
			System.out.println("输入有错,请重新输入5位字符:");
			str = scan.next().toUpperCase();
		}
		return str;
	}
	//3.方法实现数组对比,如果相同赋值到星数组上
	public static char[] result(char[] arr1,char[] arr2,char[] arr3) {
		for(int i=0;i<arr1.length;i++) {
			if(arr1[i]!=arr2[i]) {
			}else {
				arr3[i]=arr1[i];
			}
		}
		return arr3;
	}
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值