我是Java的新手,因此如果其中任何一个不清楚(或代码确实很糟糕),请提前道歉,但是我正在尝试构建一个程序,以使计算机猜测用户拥有的两位数字代码输入(即secretCode
)。下面的代码可以正常工作,它将生成一个随机代码,然后将其与密码进行比较,并检查是否在正确的位置输入了位置。
但是,我将如何做,以便每次计算机猜测时,它都无法猜测先前猜测的数字(例如,如果第一次猜测时猜测为57,则无法再次选择57在循环期间)。基本上,我希望计算机跟踪所作的猜测,而不是再做一次。有什么想法是可行的(如果可能的话,不进行大量程序重写)?还是我走错路了?
while (guesses < 10)
int[] compCode = computer.getComputerCode(); //This line gets a random two digit array of ints
System.out.print("Computer guess: ");
Arrays.stream(compCode).forEach(System.out::print);
correctPositions = getPosition(compCode, secretCode);
System.out.println("\nYou picked " + correctPositions + " numbers in the correct position.");
guesses++;
}
答案 0 :(得分:2)
一种方法是用数字填充ArrayList
,然后随机播放ArrayList
:
ArrayList<Integer> guesses = new ArrayList<>();
for(int i =0; i < 100; i++) {
guesses.add(i);
}
//guesses now contains numbers 0-99
Collections.shuffle(guesses);
然后,每当需要一个随机数时,您都可以简单地调用索引guesses
(确保跟踪所使用的索引)
一个例子可能是这样的:
while(some_condition) {
//start count at -1, so when we add one it will be 0
//which is the first index of the ArrayList
int count = -1;
//Some code
guesses.get(count++);
}
答案 1 :(得分:-1)
我认为GBlodgett的想法正确,但是另一种方法是将猜测存储在列表中并放置
if(guesses.contains(guess)
continue;
while循环的第一行