随机Obj和数组

时间:2017-09-10 03:41:15

标签: java arrays random

嗨,我对家庭作业感到嗤之以鼻......我得到了与我期待的不同的价值 这是我的类变量

我有: 种子....(通过扫描仪应该是:12345-测试值,所以我得到与我的教练相同的结果 - ) LenghtOfArray ....(通过扫描仪) 最终MAX = 8;

我不知道如何在我的代码中进行协调以使其工作

我有for循环:

Random Obj = new Random (seed);
int []myArray = new int [LengthOfArray];
for(int i = 0 ; i < myRandomArray.length ; i++) {
    myArray[i] = (int) Obj.nextLong();
    System.out.print(myArray[i] + "  ");
}
System.out.println();

现在我缺少MAX变量,所以我的输出应该是:

  

4 4 6 0 4 4 7 0 7 6 5 6

但我明白了:

  

-70013384 64862043 543438317 1940859862 924168001 1943285380 -62817581 -1920529480 541298859 -1439409345 520340403 -1293274375

那么我怎样才能强制执行我的代码以使我的MAX出现在我的MAX范围内(&lt; 8)

3 个答案:

答案 0 :(得分:2)

如果我理解您的问题,请先定义MAX -

final int MAX = 8;

使用Random.nextInt(int)指定最大值(不包括0 - MAX-1),如

myArray[i] = Obj.nextInt(MAX);

最后,你应该真正重命名你的Random实例(Obj是一个糟糕的变量名,而且每个Java的命名约定都没有大写字母 - 变量以小写字母开头)。在Java 8+中,您也可以使用IntStream和lambdas来编写

Random rand = new Random();
int lengthOfArray = 10;
final int MAX = 8;
int[] myArray = IntStream.generate(() -> rand.nextInt(MAX)) //
        .limit(lengthOfArray).toArray();
System.out.println(IntStream.of(myArray).mapToObj(String::valueOf) //
        .collect(Collectors.joining(" ")));

答案 1 :(得分:2)

您可能正在寻找Random类中的nextInt(int n)方法,该方法可用作:

myArray[i] = obj.nextInt(9); //including 8 and 0

PS obj这是您的Obj,只是我更喜欢遵循 camelCase 惯例。

答案 2 :(得分:0)

你的数组的长度应该是12,而不是8.然后得到一个介于0和8之间的数字来存储在你的数组中

  

Obj.nextInt(9);