我正在尝试创建一个范围为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[]
时才计算为双,但我看不到哪里它得到了双重类型。
答案 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)
int[] kickerNumbers
但你用int(不是数组)(int)(Math.random()*0+9);
分配它创建一个这样的数组: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);
}
}
假设您不关心重复项。
对不起。我没有读过彼得的回答......这是一样的。