通常由两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字的4个数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。
比如出题的人出题0426,猜的人说0462,此时就是2A2B
1.出数字(由电脑产生4个0-9随机数,且不重复)
int[] intNumber=new int[4];//写出一个数组,用于表示随机的四位数
for (int i = 0; i < intNumber.length; i++) {//i是下标
int suijiNum=(int)(Math.random()*10);
intNumber[i]=suijiNum;
for (int j = 0; j < i; j++) {
if (intNumber[j]==intNumber[i]){//此处用于避免数字重复
i--;
break;
}
}
}
for (int i = 0; i < intNumber.length; i++) {
System.out.print(intNumber[i]+"");
}
System.out.println();
2.猜数字(用户输入)
1.只能输入一个数字字符串
2.字符串中的字符不能重复
3.只能给4个字符(如果字符个数不等于4个,需要请用户重新输入)
PS:如果用户没有输入正确的话,不会进入比较环节
char zero=48;
char nine=57;
Scanner input=new Scanner(System.in);
System.out.println("请输入4位数");
all:for (;;){
all:for (;;){
String str=input.next();
char[] chars=str.toCharArray();
for (int i = 0; i < chars.length; i++) {//i下标
if (chars.length!=4){//超过4个字符
System.out.println("请重新输入");
continue all;
}
if (chars[i]>57||chars[i]<48){//不是0-9的范围
System.out.println("请重新输入");
continue all;
}
for (int j = 0; j < chars.length; j++) {
if ((i!=j)&&chars[i]==chars[j]){
System.out.println("请重新输入");
continue all;
}
}
}
int A=0;//a数字对位置对
int B=0;//b数字对位置错
for (int i = 0; i < chars.length; i++) {
if ((chars[i]-48)==intNumber[i]){
A++;
}
for (int j = 0; j < intNumber.length; j++) {
if ((chars[j]-48)==intNumber[i]&&(i!=j)){
B++;
}
}
}
}
3.用户猜的数字 和 电脑 出的数字对比,给出结果几A几B
System.out.println(A+"A"+B+"B");
if (A==4){
System.out.print("答对!"+str);
break;
}