无法在主驱动程序Java中调用getRandom

时间:2015-02-11 05:25:46

标签: java

我有一个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 );

4 个答案:

答案 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数组作为参数是完全正确的,特别是对于静态函数,因为你期望无状态调用。