java - 我如何从枚举中选择随机值?

标签 java arrays loops random enums

我想了解如何从枚举中选择一个字符串值并在 for-each 循环中运行。

让我在这里写作业:

"Write a static method generateRandomZoo (n).

The method should have the parameter int n and the result should be an animal array of length n, the randomly chosen animal contains.

Proceed as follows:

  • First create one empty array of corresponding length.
  • Loop through the array.
  • Generate in a random value r for each run using the static method RandomTools.randomValue between 0 and Animal.values​​().length (exclusive).
  • Assign this to the current array position Enumeration element with the corresponding ordinal number for (Animal.values ​​() [r]). You can assume that n is positive."

我所做的如下:

首先枚举类看起来像:

package main;

public enum Animal{

    ELEPHANT,LION, TIGER, WASP, SNAKE,MONKEY,  EMU;

}

主要编码部分是这样的:

public static void main(String[] args) {

    Animal[] zoo = generateRandomZoo(100);
}

private static Animal[] generateRandomZoo() {
    // TODO Auto-generated method stub

    Animal [] animals= new Animal [100];
    for(Animal a : Animal.values()){
        System.out.println("Random Animals"+ "-" + a + "-" +(a.ordinal()+1));

        for (int i = 0; i < 100; i++) {
            animal[i] = random animal
            System.out.println(i);
        }

        private static   RandomTools.randomValue();

    }

你能告诉我我错在哪里以及如何改正吗?

(顺便说一句,我是初学者,请用我能理解的方式描述:))

最佳答案

要生成随机数,请使用 ThreadLocalRandom.current().nextInt(0, Animal.values().length) 并使用 Animal.values( )[randomNumber],尽管看起来您已获得 RandomTools.randomValue。为了完整起见,我自己写了一个。

在循环外声明一次 Animal[] values = Animal.values() 并对其执行操作以避免 values() 被多次调用。

它应该看起来像这样:

import java.util.concurrent.ThreadLocalRandom;

public class SOExample {
    private enum Animal {
        ELEPHANT, LION, TIGER, WASP, SNAKE, MONKEY, EMU
    }

    // It's not clear from the question if you're provided with this or if you have to write it
    private static class RandomTools {
        public static int randomValue(int start, int end) {
            return ThreadLocalRandom.current().nextInt(start, end);
        }
    }

    public static void main(String[] args) {
        Animal[] zoo = generateRandomZoo(100);
        // Printing to STDOUT to check results
        for (int i = 0; i < zoo.length; i++) {
            System.out.println(zoo[i]);
        }
    }

    private static Animal[] generateRandomZoo(int numberOfAnimals) {
        Animal[] animals = new Animal[numberOfAnimals];
        Animal[] values = Animal.values();
        for (int i = 0; i < animals.length; i++) {
            int random = RandomTools.randomValue(0, values.length);
            animals[i] = values[random];
        }
        return animals;
    }
}

关于java - 我如何从枚举中选择随机值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61978690/

相关文章:

java - Dijkstra 算法 : wrong path

arrays - 如何在循环的每次迭代中将元素添加到 Bash 中的数组?

JAVA - 双拆分字符串并转换为整数

Javascript:遍历数组并修改数组内的项目

java - For循环代码优化

java - 图:只访问那些最大化效用函数的节点

java - 多次点击 JButton 按下

java - 通过 BigQuery Java api 创建数据存储备份表

php - mysql_fetch_assoc 从主键返回数组

驱动器的 C# 循环挂起