/*
* 猜数字游戏。程序在后台产生 一个 四位的随机数,每一位都是0-9但不能相同。
* 玩家在控制台输入猜测数字, 程序用输入的数字和随机数进行比较,
* 提示:几A几B. 所谓A指的是相同位置相同数字的个数,B指的是相同数字但不同位置的数字个数.
* 例如:后台随机数是1234,用户输入2468,那么应该提示"0A2B",
* 如果用户输入1357,那么提示应该是“1A1B”,
* 最终只有猜测为1234,返回"4A0B" 才算游戏成功。
* 每次游戏只有7次猜测的机会
*/
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
int random;
int[] arr = new int[4];
// 产生一个每个数字都不相同的四位数的随机数
while (true) {
// 产生一个四位数的随机数
random = (int) (Math.random() * 9000) + 1000;
// 将个十百千位的数字取出来
arr[0] = random / 1000;
arr[1] = random / 100 % 10;
arr[2] = random / 10 % 10;
arr[3] = random % 10;
if (arr[0] == arr[1] || arr[0] == arr[2] || arr[0] == arr[3] || arr[1] == arr[2] || arr[1] == arr[3]
|| arr[2] == arr[3]) {
continue;
}
break;
}
int aNum=0,bNum=0;
for (int i = 0; i < 7; i++) {
System.out.print("请输入一个每个数字都不相同的四位数,您还有" + (7 - i) + "次机会:");
int inNum=in.nextInt();
if(inNum<1000||inNum>9999) {
System.out.println("输入错误,请重新输入!");
i--;
continue;
}
aNum = 0;
bNum = 0;
//将输入的数字的个十百千给分解出来
int[] inputNum = new int[4];
inputNum[0] = inNum / 1000;
inputNum[1] = inNum / 100 % 10;
inputNum[2] = inNum / 10 % 10;
inputNum[3] = inNum % 10;
// 验证是否有重复位
if (inputNum[0] == inputNum[1] || inputNum[0] == inputNum[2] || inputNum[0] == inputNum[3] || inputNum[1] == inputNum[2] || inputNum[1] == inputNum[3] || inputNum[2] == inputNum[3]) {
System.out.println("输入的数字有重复,请重新输入!");
i--;
continue;
}
for (int j = 0; j < inputNum.length; j++) {
for (int j2 = 0; j2 < inputNum.length; j2++) {
if (arr[j] == inputNum[j2]) {
if (j == j2) {
aNum++;
} else {
bNum++;
}
}
}
}
System.out.println(aNum + "A" + bNum + "B");
if (aNum == 4) {
System.out.println("恭喜您!猜对了。。。");
break;
}
}
in.close();
System.out.println(random);
Scanner in =new Scanner(System.in);
int random;
int[] arr = new int[4];
// 产生一个每个数字都不相同的四位数的随机数
while (true) {
// 产生一个四位数的随机数
random = (int) (Math.random() * 9000) + 1000;
// 将个十百千位的数字取出来
arr[0] = random / 1000;
arr[1] = random / 100 % 10;
arr[2] = random / 10 % 10;
arr[3] = random % 10;
if (arr[0] == arr[1] || arr[0] == arr[2] || arr[0] == arr[3] || arr[1] == arr[2] || arr[1] == arr[3]
|| arr[2] == arr[3]) {
continue;
}
break;
}
int aNum=0,bNum=0;
for (int i = 0; i < 7; i++) {
System.out.print("请输入一个每个数字都不相同的四位数,您还有" + (7 - i) + "次机会:");
int inNum=in.nextInt();
if(inNum<1000||inNum>9999) {
System.out.println("输入错误,请重新输入!");
i--;
continue;
}
aNum = 0;
bNum = 0;
//将输入的数字的个十百千给分解出来
int[] inputNum = new int[4];
inputNum[0] = inNum / 1000;
inputNum[1] = inNum / 100 % 10;
inputNum[2] = inNum / 10 % 10;
inputNum[3] = inNum % 10;
// 验证是否有重复位
if (inputNum[0] == inputNum[1] || inputNum[0] == inputNum[2] || inputNum[0] == inputNum[3] || inputNum[1] == inputNum[2] || inputNum[1] == inputNum[3] || inputNum[2] == inputNum[3]) {
System.out.println("输入的数字有重复,请重新输入!");
i--;
continue;
}
for (int j = 0; j < inputNum.length; j++) {
for (int j2 = 0; j2 < inputNum.length; j2++) {
if (arr[j] == inputNum[j2]) {
if (j == j2) {
aNum++;
} else {
bNum++;
}
}
}
}
System.out.println(aNum + "A" + bNum + "B");
if (aNum == 4) {
System.out.println("恭喜您!猜对了。。。");
break;
}
}
in.close();
System.out.println(random);
}