public class Main
{
public static void main(String[] args) {
// set the upper bound
int upperBound = 5;
// create an ArrayList to store the numbers
List<Integer> numList = new ArrayList<Integer>(upperBound-1);
// use random object to generate random number
Random rand = new Random();
// use a while loop to generate random number
while(numList.size() <= upperBound){
int i = rand.nextInt(upperBound+1);
if(!numList.contains(i)&&i!=0){
numList.add(i);
}
}
// print the value
for(int num:numList){
System.out.println(num);
}
}
}
3条答案
按热度按时间7nbnzgx91#
解决这个问题的一种方法是生成一个包含1到n的数组,然后将其洗牌;请看@bohemian's answer以获得一种简洁的表达方式。。。虽然他的代码产生了
List<Integer>
而不是一个int[]
.但是,除非您能够预测n可能很大(或者这个过程要进行很多次),否则您的解决方案的(假定的)低效性不应该是一个问题。抵制过早优化的诱惑。。。
xyhw6mcr2#
我认为while循环可以帮助您使用它,并使用contains检查数字是否在列表中。
xam8gpfp3#
试试这个: