我想了解如何从枚举中选择一个字符串值并在 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/