我正在努力构建我的第一个应用程序,并且我正在构建一个Sudoku手机游戏。我已经构建了随机数生成器,我只是想弄清楚如何编写它以便它只生成1-9(非零)之间的数字,并且每个数字只生成一次。以下是我到目前为止的情况:
package randomNumber;
import java.util.Random;
public class OneToNine {
public static final void main(String... aArgs) {
log ("generating random integers in range 1-9");
Random randomGenerator = new Random();
for (int idx = 1; idx <= 9; ++idx) {
int randomInt = randomGenerator.nextInt(9);
log ("Generated : " + randomInt);
}
log("Done. ");
}
private static void log (String aMessage) {
System.out.println(aMessage);
}
}
答案 0 :(得分:3)
您不应该担心以随机顺序生成数字,而应该调整您的方法来改变数字。你知道你会得到数字1-9所以做这样的事情:
public ArrayList<Integer> getRandomOrderedNums(){
ArrayList<Integer> numbers = new ArrayList<Integer>();
for(Integer i = 1; i < 10; i++){
numbers.add(i);
}
Collections.shuffle(numbers);
}
答案 1 :(得分:0)
对于第二部分,要查看数字是否重复,您可以轻松使用数据结构,例如HashSet,这是检查重复值的最有效方法。如果您对它们不满意,请告诉我。使用hashset,你可以得到一个随机数,并检查该组是否包含这个数字,如果是,请再试一次。
关于随机数,您可以randomGenerator.nextInt(9) + 1
,因此它始终是1-9(包括)。
答案 2 :(得分:0)
你可能想要使用这样的函数:
public static int getRandInt(int max, int min) {
return new Random().nextInt((max - min) + 1) + min;
}