2011-05-02 48 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);