我有一个getRandom方法从数组中获取一个随机整数并返回它,但不知何故,当我尝试在我的驱动程序中调用该方法时,出现错误
“euroroulette类型中的方法getRandom(int [])不适用于参数()”
我将如何使这项工作?我只是想显示getRandom方法生成的int。
public final int[] europeanroulette = {0,32,15,19,4,21,2,25,17,34,6,27,13,36,11,30,8,23,10,5,24,16,33,1,20,14,31,9,22,18,29,7,28,12,35,3,26};
// random number generated from the roulette
public int getRandom(int[] europeanroulette){
int winningnumber = new Random().nextInt(europeanroulette.length);
return winningnumber;
}
这是来自我的司机:
int winningnumber = europeanroulette.getRandom();
System.out.println("The winning number is" + winningnumber );
答案 0 :(得分:3)
public int getRandom(int[] europeanroulette)
摆脱参数。该类已经提供了自己的数组。
public int getRandom()
答案 1 :(得分:2)
调用如下声明
int winningnumber = getRandom(europeanroulette);
1)你的方法是静态的,所以如果你是从同一个类调用,那么如果你从另一个类调用则直接调用然后使用<class_name>.<method_name>;
2)euroroulette变量应该在您的驱动程序类中初始化。然后你可以使用并调用方法public int getRandom(int[] europeanroulette)
答案 2 :(得分:2)
不是在包含getRandom()的类中声明int [],而是在驱动程序中声明它,并将参数传递给方法:
// random number generated from the roulette
public static int getRandom(int[] nums){
int winningnumber = nums[new Random().nextInt(nums.length)]; //using the number as index
return winningnumber;
}
在驱动程序中:
public final int[] europeanroulette= {0,32,15,19,4,21,2,25,17,34,6,27,13,36,11,30,8,23,10,5,24,16,33,1,20,14,31,9,22,18,29,7,28,12,35,3,26};
int winningnumber = getRandom(europeanroulette);// or whatever class.getRandom(); (the class where your method is located in.)
System.out.println("The winning number is" + winningnumber );
答案 3 :(得分:1)
我相信你正在寻找这些方面的东西:
import java.util.Random;
public class EuropeanRoulette {
private static Random random = new Random(System.currentTimeMillis());
public static int getRandom(int[] numbers) {
int selectedIndex = random.nextInt(numbers.length);
return numbers[selectedIndex];
}
public static void main(String[] args) {
int[] numbers = { 0, 32, 15, 19, 4, 21, 2, 25, 17, 34, 6, 27, 13, 36, 11, 30, 8, 23, 10, 5, 24, 16, 33, 1, 20, 14, 31, 9, 22, 18, 29, 7, 28, 12, 35, 3, 26 };
System.out.println(EuropeanRoulette.getRandom(numbers));
}
}
Random#nextInt(int bound)
将返回获胜的索引,而不是中奖号码本身
这就是你返回numbers[selectedIndex]
。
另外,提供numbers
数组作为参数是完全正确的,特别是对于静态函数,因为你期望无状态调用。