Java 非常基本的东西:在模拟老虎机的程序中遇到问题-枚举和数组
所以我的教授给了我们一个作业,我们必须创建一个运行的老虎机程序。机器有3个卷盘,卷盘本身由存储在枚举中的6个符号组成: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
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)]