随机生成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;
}
}