Java随机数组

时间:2011-05-02 21:36:40

标签: java arrays random

我正在尝试创建一个范围为0-9的随机数组,其中一个变量是kickerNumbers。虽然说不兼容的类型我得到编译错误。我已经尝试将(int)更改为[int],但我认为不管怎么说都是正确的,而且不是这样。有没有其他方式来写这个?我需要它作为前4个数字为0-9,但第五个数字需要更小,如0-4。对于0-4,我只是做了一个完全不同的变量。这是一个不错的选择吗?以下是给出错误的行的示例代码。

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[]时才计算为双,但我看不到哪里它得到了双重类型。

6 个答案:

答案 0 :(得分:5)

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

您无法将int分配给int[]

假设应该是更多的一个数字,它可能是这样的

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

在一个不相关的说明中,为什么要乘以Math.random()*0?这对我来说似乎很愚蠢。如果您想要1到10的数字,我会这样做:Math.random()*10 + 1

答案 1 :(得分:4)

  1. 这是一个int数组:int[] kickerNumbers但你用int(不是数组)(int)(Math.random()*0+9);分配它
  2. 您的随机将返回9. 始终(运算符优先级)。
  3. 创建一个这样的数组:int[] kickerNumbers = int[numberOfPlayers]并在循环中分配数字,或者使用数组从0到9的ArrayList并调用shuffle

答案 2 :(得分: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);

答案 3 :(得分:2)

简单地:

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

答案 4 :(得分: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));
}

上面的代码包含一个方法,它将在给定参数之间返回一个整数。

答案 5 :(得分: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);
    }
}

假设您不关心重复项。

对不起。我没有读过彼得的回答......这是一样的。