2014-02-07 24 views
0

我試圖根據用戶提供的一定範圍打印五個隨機數字,從不重複。下面發佈是我迄今爲止的代碼。首先,我不知道如何列出在ArrayList中找到的數字,或者即使我只是使用ArrayList而不是Array。有什麼想法嗎?如何獲得五個隨機數字的列表,以在Java中不重複地打印?

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 " +) 
    } 
} 
+0

查看[SET](http://docs.oracle.com/javase/7/docs/api/java/util/Set.html)。我有一個答案[這裏](http://stackoverflow.com/questions/21324959/java-array-how-do-i-make-a-lottery-game/21325040#21325040),可以幫助你沿着你的方式。 – csmckelvey

+0

謝謝@Takendarkk,我注意到你使用了「rand.nextInt(51)」。有沒有一種方法可以指定由構造函數指定的範圍而不是51? – GoldenEarring

+0

那麼,如果他們輸入的範圍是100-200,你可以使用像'rand.nextInt(101)+ 100'這樣的nextInt()給出0和參數(獨佔)之間。 – csmckelvey

回答

0

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);