猜数字游戏,给定4个随机不重复数字,然后玩家去猜,每次只能看见两个数字结果,一个A表示正确位置上的数字数量,另一个B表示存在但不在正确位置上的数字数量,玩家根据这两个值去猜,直到猜对为止。
比如给定‘1234’,猜1256,则得:A2B0,猜:5612,则得:A0B2,猜2143,则得:A0B4,以此类推,直到4个数字正确。
以下,介绍如何在java下实现基本原理。
首先,我们需要生成4位不重复的数字,并把它存入有序列表中:public List getNums() {// 生成随机数字
List li = new ArrayList();//用有序列表存储数字
Random rr = new Random();
while (li.size() < 4) {
int num = rr.nextInt(10);
if (!li.contains(num)) {//判断数字是否已存在于列表中
//System.out.println(num);
li.add(num);
} else {
num = rr.nextInt(10);//已存在的话,重新赋值
}
}
//System.out.println(li);
return li;
}
接着,录入玩家输入的4位数字,并与生成的数字比较:public int caishuzi(List list) {
Scanner ss = new Scanner(System.in);
System.out.println("请输入数字");
String srnum = ss.next();
//System.out.println(alist);
String a[] = srnum.split("");
ArrayList b = new ArrayList();
for(int i=0;i
b.add(Integer.valueOf(a[i]));//将输入的数字转为integer方便比较
}
int A = 0;//A用来判断有几个数字位置对
int B = 0;//B用来判断有几个数字存在但位置不对
for(int j=0;j
if(list.get(j)==b.get(j)) {
A++;
}
if(list.contains(b.get(j))) {
B++;
}
}
B = B-A;
if(A!=4) {
System.out.println("A"+A+"B"+B);
}
return A;//返回值A,用来判断是否猜正确
}
最后,执行,使用循环来进行重复判断:public static void main(String[] args) {
caishuzi cc = new caishuzi();
List list = cc.getNums();
while(true) {
int flag = cc.caishuzi(list);
if(flag ==4){
System.out.println("恭喜");
break;
}
}
}