2011-05-02 72 views
-4

我想製作一個隨機數的數組,範圍從0到9,這個變量是kickerNumbers。雖然說不兼容的類型,但我得到一個編譯錯誤。我曾嘗試將(int)更改爲[int],但我認爲這不會是正確的,但事實並非如此。有沒有另一種方式來寫這個?我需要它作爲前四個數字是0-9,但第五個數字需要小一些,比如0-4。對於0-4,我只是做了一個完全不同的變量。這是一個不錯的選擇嗎?這是給出錯誤的行的示例代碼。Java的隨機數組

import java.util.Scanner; 
import java.util.InputMismatchException; 
public class CashBallTest 
{ 
    public static void main(String[]args) 
    { 
     Scanner keyboard = new Scanner(System.in); 
     int kicker; 
     int[] kickerNumbers = (int)(Math.random()*0+9); 
     int kickerPowerball=(int)(Math.random()*0+4); 

錯誤讀取:

\CashBallTest.java:9: incompatible types 
    found : int 
    required: int[] 
    int[] kickerNumbers = (int)(Math.random()*0+9); 

我也試圖改變(int)(int[])但隨後說,這是一個不可兌換的型計數爲雙時,它需要有一個int[]但我不」看看它從哪裏得到雙重類型。

回答

5
int[] kickerNumbers = (int)(Math.random()*0+9); 

您不能分配的intint[]

假設應該是更多的一個數字,它可能是這樣的

int[] kickerNumbers = new int[5]; 
for(int i = 0; i < kickerNumbers.length; i++) { 
    kickerNumbers[i] = (int)(Math.random()*0+9); 
} 

在一個不相關的音符,你爲什麼要乘以Math.random()*0?這對我來說似乎很愚蠢。如果通過10想要一個號碼1,我這樣做:Math.random()*10 + 1

+0

+1指出了隨機()的問題。 (並在我之前發帖:)) – MByD 2011-05-02 21:48:25

4
  1. 這是一個int數組:int[] kickerNumbers但你用INT(不陣列)(int)(Math.random()*0+9);
  2. 分配給它的隨機返回9. 總是(運營商優先級)。

創建一個這樣的數組:int[] kickerNumbers = int[numberOfPlayers]和循環分配號碼,或者使用與數字的ArrayList 0-9和呼叫shuffle

3

它可以使用自己的隨機數生成器,所以你可以使用nextInt是工作並避免一些混淆。

Random r = new Random(); 
// four values [0, 9] 
int[] kickerNumbers={r.nextInt(10), r.nextInt(10), r.nextInt(10), r.nextInt(10)}; 
// one value [0, 4] 
int kickerPowerball = r.nextInt(5); 
+0

對於'r.nextInt()'。比'Math.random()'更好的遊戲' – MByD 2011-05-02 22:34:23

+0

更快,但這並不重要。 ;) – 2011-05-02 22:49:08

0

你試圖給一個數組賦予一個int值,這就是給你的錯誤。

你想要做什麼它使用循環來遍歷你的數組並且爲它指定隨機值,你提到你希望你的數字在0-9和0-4之間,下面的代碼會給你那個結果:

public static void main(String[] args) { 
    int[] kickerNumbers = new int[4]; 
    for (int i = 0; i < kickerNumbers.length; i++) { 
     kickerNumbers[i] = randomRange(0,9); 
    } 
    int kickerPowerball = randomRange(0,4); 
} 
public static int randomRange(int min, int max) { 
    return (int) Math.round(((Math.random() * (max - min)) + min)); 
} 

上面的代碼包含一個方法,它將返回給定參數之間的整數。

0
import java.util.Random; 
public class CashBallTest { 

    public static void main (String[]args){ 

     int[] kickerNumbers= new int[5]; 
     for (int i=0;i<4;i++) 
      kickerNumbers[i]=randomize(9); 
      kickerNumbers[4]=randomize(4); 

     for (int i:kickerNumbers) 
      System.out.println(i); 
    } 

    public static int randomize(int k){ 
     Random rand=new Random(); 
     return rand.nextInt(k); 
    } 
} 

假設你不關心重複。

對不起。我沒有讀過彼得的回答......這也是一樣的。

+1

你也應該*不*每次都得到一個新的Random()。 – 2011-05-03 00:56:52

0

簡單:

java.util.Random r = new java.util.Random(); 
int[] kickerNumbers = r.ints(0, 10).limit(5).toArray(); // 5 times 0...9 

然後改變最後一個元素:

kickerNumbers[4] = r.nextInt(5);