题干在代码注释
import static org.junit.Assert.assertTrue;
import java.util.Random;
/**
* 游戏规则:
电脑出数字,人猜。出数字的电脑要预先生成一个没有重复数字的4位数 。 猜的人就可以开始猜。
每猜一个数字,电脑就要根据这个数字给出几A几B,
其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。
如正确答案为 5234,而猜的人猜 5346,则是 1A2B,其中有一个5的位置对了,记为1A,
而3和4这两个数字对了,而位置没对,因此记为 2B,合起来就是 1A2B。
接着猜的人再根据出题者的几A几B继续猜,直到猜中(即 4A0B)为止。
本次考试中,需要实现三个方法:
1.无参数的构造方法:生成没有重复数字的4位数,首位不为0
2.compare方法
3.playGame方法:模拟玩家的猜测过程,按照下面的格式输出,第一行为Game Start,第二行是10个-
后面是玩家每一次的猜测,并给出每次猜测的结果,不同猜测用10个-分割,最后输出一行胜利祝贺,
使用步数和10个-。playGame方法需要使用compare方法来比较。
要求:
1.不可超过10000轮,不可少于1轮(至少得猜一次),不要求玩家采用最优策略;
2.最后一次猜测的结果必须是4A0B,即猜对;
3.只要玩家最后猜对即可,但是玩家不能猜测有重复数字的四位数,不能猜首位为0;
4.最后一行没有换行符!!!!!!!!!!!!
输出格式例1:
Game Start
----------
Guess:5346
Result:1A2B
----------
Guess:5324
Result:4A0B
----------
You win!You took 2 steps.
----------
输出格式例2:
Game Start
----------
Guess:1234
Result:0A0B
----------
Guess:5607
Result:1A3B
----------
Guess:7650
Result:4A0B
----------
You win!You took 3 steps.
----------
*/
public class BullsAndCows {
private int secret;//要猜的那个数
/**
* 有参数的构造方法,将secret设置为传入的参数
* @param a
*/
public BullsAndCows(int a){
this.secret = a;
}
/**
* 无参数的构造方法,随机生成四位数secret,注意这个四位数没有重复数字,首位不能是0
*/
public BullsAndCows(){
//insert some code, and set secret
secret = producerandom();
}
public int