版权声明:木心 https://blog.csdn.net/sinat_41642067/article/details/84640750
鉴于不同的高级语言在基础语法规则存在一些细微的差异,因此我们更加应当注重基础语法规则不混淆。通过猜字符游戏可以将Java语法中的基础知识结合起来,因而可以作为一种复习。
猜字符游戏需求:将系统随机生成的不重复五位字符数组与用户输入(这里由控制台输入)的五位字符数组进行匹配,若答对显示得分,若答错提示匹配字符个数和匹配位置个数。
import java.util.Scanner;
/**猜字符游戏*/
public class GuessingGame {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
char[]chs=generate();
System.out.println(chs);//作弊
int count=0;
while (true) {
System.out.println("猜吧");
String a=scan.nextLine().toUpperCase();
if (a.equals("X")) {
System.out.println("下次再來");
break;
}
char[]input=a.toCharArray();
int[] result=check(chs, input);
if (result[1]==chs.length) {
int score=100*chs.length-count*10;
System.out.println("正确,得分"+score);
break;
} else {
count++;
System.out.println("猜对了"+result[0]+"个,"+result[1]+"位");
}
}
scan.close();
}
/**产生随机字符数组*/
public static char[] generate() {
char[]chs=new char[5];
char[] letters={'A','B','C','D','E','F','G','H',
'I','J','K','L','M','N','O','P','Q','R','S',
'T','U','V','W','X','Y','Z'};
boolean[]used=new boolean[letters.length];
for (int i = 0; i < chs.length; i++) {
int index;
do {
index=(int)(Math.random()*letters.length);
} while (used[index]==true);
chs[i]=letters[index];
used[index]=true;
/**i=0 0<5 index=0 false chs[0]=letters[0]='A' used[0]=true
* i=1 1<5 index=3 false chs[1]=letters[3]='D' used[3]=true
* i=2 2<5 index=2 false chs[2]=letters[2]='C' used[2]=true
* ......
* i=4 4<5 index=0 true
* index=2 true
* index=5 false chs[4]=letters[5]='F' used[5]=true
* */
}
return chs;
}
/**比较用户输入的input字符数组和chs随机字符数组*/
private static int[] check(char[]chs,char[]input) {
int[]result=new int[2];
for (int i = 0; i < chs.length; i++) {
for (int j = 0; j < input.length; j++) {
if (chs[i]==input[j]) {
result[0]++;
if (i==j) {
result[1]++;
}
break;
}
}
}
return result;
}
}