Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 非常基本的东西:在模拟老虎机的程序中遇到问题-枚举和数组_Java_Arrays_Enums - Fatal编程技术网

Java 非常基本的东西:在模拟老虎机的程序中遇到问题-枚举和数组

Java 非常基本的东西:在模拟老虎机的程序中遇到问题-枚举和数组,java,arrays,enums,Java,Arrays,Enums,所以我的教授给了我们一个作业,我们必须创建一个运行的老虎机程序。机器有3个卷盘,卷盘本身由存储在枚举中的6个符号组成: public enum Symbol { SEVEN(12,"images/seven.jpg"), WATERMELON(10,"images/watermelon.jpg"), ORANGE(8,"images/orange.jpg"), PLUM(6,"images/plum.jpg"), LEMON(4,"images/l

所以我的教授给了我们一个作业,我们必须创建一个运行的老虎机程序。机器有3个卷盘,卷盘本身由存储在枚举中的6个符号组成:

public enum Symbol 
{   
    SEVEN(12,"images/seven.jpg"),
    WATERMELON(10,"images/watermelon.jpg"),
    ORANGE(8,"images/orange.jpg"),
    PLUM(6,"images/plum.jpg"),
    LEMON(4,"images/lemon.jpg"),
    CHERRY(2,"images/cherry.jpg");
}
我们应该使用这些符号来创建一个“卷轴”对象。我的问题集中在按照教授要求的顺序用符号填充这个卷轴(实际上只是一个符号[]数组)

他要求我们使用Random类填充卷轴,使用10作为种子编号。以下是我目前掌握的情况:

//Creating an unrandomized reel array, which contains the symbols in the exact order as they appear in the enum
private Symbol[] unrandomizedReel = new Symbol[]{Symbol.SEVEN, Symbol.WATERMELON, Symbol.ORANGE, Symbol.PLUM, Symbol.LEMON, Symbol.CHERRY};

//Declares local Symbol array
Symbol[] randomizedReel = new Symbol[6];

//Keeps track of the position in the unradomized reel array
int unrandomizedReelIndex = 0;

//Creates a Random object which will be used to generate values based
//on the seed. **seed == 10**
Random randNum = new Random(seed);

//Loop will populate the randomized reel
while(unrandomizedReelIndex < 6)
  {
    //This int will hold values ranging from 0-5. Will be used as an index
    //to populate randomized reel
    int rangedRandomNumIndex = randNum.nextInt(6);

    //if the element at the given index in the randomized reel is empty
    if(randomizedReel[rangedRandomNumIndex] == null)
      {
        //A symbol from the unrandomized reel is added to it
        randomizedReel[rangedRandomNumIndex] = unrandomizedReel[unrandomizedReelIndex];

        //The index used to iterate through the unrandomized reel is incremented by 1
        unrandomizedReelIndex++;
      }
  }
但是,根据我的教授,输出应该是:

ORANGE
PLUM
SEVEN
LEMON
WATERMELON
CHERRY
我做错了什么?为什么我的输出和他的不同,即使我们都使用10作为种子?任何帮助都将不胜感激。谢谢

new Symbol[]{Symbol.SEVEN, Symbol.WATERMELON, Symbol.ORANGE, Symbol.PLUM, Symbol.LEMON, Symbol.CHERRY};
可以简化为

Symbol.values()
我猜你的教授在

   unrandomizedReel[Random.nextInt(6)]
在位置0,然后将
unrandomizedReel
的元素置零,得到一个介于1和5之间的随机数x,取第x个非空值并将其置于位置1,置零,然后用介于1和4之间的数字重复,依此类推


如果你有理由相信你的教授使用了不同的算法,那么就用这些信息编辑你的问题。

谢谢你的回答,迈克。不幸的是,我的教授告诉我们不能使用数组以外的任何东西。你需要使用特定的算法来进行洗牌吗?我没有发现你的解决方案有任何问题,可能只是与你的教授的略有不同(例如,随机数可以表示旧数组中的索引,而不是新数组,或者你可以使用随机数多次交换值)“可能只是与你的教授的稍有不同……”这就成功了。谢谢你,凯尔!
   unrandomizedReel[Random.nextInt(6)]