题目描述:系统随机生成一个4位随机数,然后用户输入一个4位数,如果随机数跟输入的4位数对应位的值相同则用A表示,如果随机数跟输入的4位数有相同的数字,但不在同一个位置上,则用B表示。如:随机数1523 输入的是:2323则输出:2A0B,随机数:1234 输入数:1234 输出4A0B。代码如下:
package com.xie.guessing;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class NumberGuessing {
private static final int count=7;
private int aAcount=0;
private int bAcount=0;
public static void main(String[] args) {
int index=0;
long guessedNum=(long)(Math.random()*10000);
String toBeGuessNum=null;
BufferedReader br=null;
try {
br=new BufferedReader(new InputStreamReader(System.in));
toBeGuessNum = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
NumberGuessing ng=new NumberGuessing();
while (index<count) {
int m=ng. findAcount(guessedNum,toBeGuessNum);
int n=ng.findBcount(guessedNum, toBeGuessNum);
System.out.println("猜测的数字为:"+m+"A"+n+"B");
if (m==4) {
System.out.println("恭喜你猜对了。");
System.out.println("你猜测了"+(index+1)+"次。");
break;
}
try {
toBeGuessNum=br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
index++;
}
}
private int findAcount(long m,String toBeGuessedNum){
aAcount=0;
String k=Long.toString(m);
System.out.println(k);
if (k.length()==toBeGuessedNum.length()) {
for (int i = 0; i < k.length(); i++) {
if (k.charAt(i)==toBeGuessedNum.charAt(i)) {
aAcount++;
}
}
}else {
System.out.println("猜测数字跟生成数字长度不一致");
}
return aAcount;
}
private int findBcount(long m,String toBeGuessedNum){
bAcount=0;
String k=Long.toString(m);
System.out.println(k);
if (k.length()==toBeGuessedNum.length()) {
for (int i = 0; i < k.length(); i++) {
if (k.charAt(i)!=toBeGuessedNum.charAt(i)) {
for (int j = 0; j < toBeGuessedNum.length(); j++) {
if (k.charAt(i)==toBeGuessedNum.charAt(j)) {
bAcount++;
}
}
}
}
}else {
System.out.println("猜测数字跟生成数字长度不一致");
}
return bAcount;
}
}