问题
I'm trying to get five random numbers printed that never repeat, based on a certain range provided by the user. Posted below is the code I have so far. Firstly, I don't know how to list the numbers found in the ArrayList, or even if I should use ArrayList over just an Array. Any thoughts?
package h1p2;
import java.util.ArrayList;
public class test{
public void method (int min, int max){
//Declare and initialize arrays and index variables
ArrayList<Integer> rangeOne = new ArrayList<Integer>();
ArrayList<Integer> rangeMinMax = new ArrayList<Integer>();
int z = min;
int i = 0;
int q = 0;
//int rangeLength = rangeMinMax.length;
//need minimum/max differential of 50 or > to execute method
if (max - min < 50){
System.out.println("Please enter numbers with a differential of 50 or greater.");
}
//run if differential checks out
else{
while (z <= max && z >= min ){
rangeMinMax.set(z, 1);
i++;
}
}
while (q < 5){
int randomNumber = (int)(rangeMinMax.size() * Math.random());
if (randomNumber == rangeOne.indexOf(0)|| randomNumber == rangeOne.indexOf(1) ||
randomNumber == rangeOne.indexOf(2) || randomNumber == rangeOne.indexOf(3) ||
randomNumber == rangeOne.indexOf(4) || randomNumber == rangeOne.indexOf(5)){
break;
}
else{
rangeOne.set(q, randomNumber);
}
q++;
}
System.out.println("The numbers are " + )
}
}
回答1:
As Takendarkk says a set is useful.
// First check that min, max are valid and far enough apart
Set<Integer> set = new HashSet<>();
Random r = new Random();
while (set.size() < 5) {
set.add(min + r.nextInt(max - min + 1));
}
System.out.println("Your numbers are: " + set);
来源:https://stackoverflow.com/questions/21618495/how-do-i-get-a-list-of-five-random-numbers-to-be-printed-without-duplicates-in-j