【问题标题】:Random Obj and Array随机对象和数组
【发布时间】:2018-02-18 14:19:22
【问题描述】:

您好,我有一个家庭作业的片段……我得到的值与我预期的不同 这是我的类变量

我有: 种子 ....(通过扫描仪应该是: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 范围内(即

【问题讨论】:

    标签: java arrays random


    【解决方案1】:

    数组的长度应该是 12,而不是 8。然后要获取 0 到 8 之间的数字以存储在数组中,请使用

    Obj.nextInt(9);

    【讨论】:

      【解决方案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(" ")));
      

      【讨论】:

      • 哈哈哈哈哈哈非常感谢!我只是在发布问题后才想出来......不过非常感谢您的快速回答!非常感谢!
      • 您在上面写的内容非常棒,但我仍然是 Java 新手......但我一定会修改它并尝试在今晚晚些时候理解它:)跨度>
      【解决方案3】:

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

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

      PSobj 这是你的Obj,只是我更喜欢遵循 ​​camelCase 约定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-04
        • 2021-06-24
        • 1970-01-01
        • 2021-10-23
        相关资源
        最近更新 更多