3

正如标题所示,我正在做一个老虎机的家庭作业程序。我四处搜索,我很满意该程序对我来说足够正确。我遇到的问题是在生成随机数之上,我应该为数字 1-5(樱桃、橙子、李子、铃铛、甜瓜、酒吧)分配值。然后我要在程序运行时显示输出而不是数字。谁能让我指出如何做到这一点的正确方向?

import java.util.Random;
import java.util.Scanner;



public class SlotMachineClass {


public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    int Coins = 1000;
    int Wager = 0;




    System.out.println("Steve's Slot Machine");
    System.out.println("You have " + Coins + " coins.");
    System.out.println("Enter your bet and press Enter to play");




    while (Coins > 0)
    {
    int first = new Random().nextInt(5)+1;
    int second = new Random().nextInt(5)+1;
    int third = new Random().nextInt(5)+1;

    Wager = input.nextInt();

    if(Wager > Coins)
             Wager = Coins;

    System.out.println(first + " " + second + " " + third);


    if(first == second && second == third)
    { Coins = Coins + (Wager * 3);
         System.out.println("You won " + (Wager * 3) + "!!!!" + " You now have " + Coins + " coins.");
         System.out.println("Enter another bet or close program to exit");}

    else if((first == second && first != third) || (first != second && first == third) || (first != second && second == third))
    { Coins = Coins + (Wager * 2);
         System.out.println("You won " + (Wager * 2) + "!!!" + " You now have " + Coins + " coins.");
         System.out.println("Enter another bet or close program to exit");}

    else {Coins = Coins - Wager;  
    System.out.println("You Lost!" + "\nPlay Again? if so Enter your bet.");}



    }

    while (Wager == 0)
    {
        System.out.println("You ran out of coins. Thanks for playing."); 
    }


}

}

4

5 回答 5

4

如果你有一个int并且想要一些String与之相关的,有几种方法可以做到这一点。

第一个是有一个字符串数组并查找它们。

public static String[] text = new String[] {"Cherry", "Bell", "Lemon", "Bar", "Seven"};
public String getNameForReel(int reelValue) {
    return text[reelValue];
}
// And to call it...
System.out.println(getNameForReel(first)); //etc...

或者,您可以在 switch 语句中执行此操作(我不喜欢这样做,但您可能会这样做):

public String getNameForReel(int reelValue) {
    switch(reelValue) {
       case 0: return "Cherry";
       case 1: return "Bell";
       case 2: return "Lemon";
       case 3: return "Bar";
       case 4: return "Seven";
    }
}
于 2013-03-28T01:52:08.600 回答
2

您需要一个查找表:

String[] text = new String[] {"Cherry", "Bell", "Lemon", "Bar", "Seven"};

然后你可以做

System.out.println(text[first] + " " + text[second] + " " + text[third]);

无需创建更多方法。

于 2013-03-28T01:54:26.490 回答
0

创建一个数组:

String[] s = {Cherries, Oranges, Plums, Bells, Melons, Bars};

然后你可以打印s[num-1]而不是num(其中 num 是随机整数)。例如,如果您的随机 int 为 2,则打印 s[2-1] 即 s[1],这将是橙色。

于 2013-03-28T01:53:07.787 回答
0

新程序员最有可能在介绍课程中使用的非数组解决方案是嵌套的 if-else:

String fruitToPrint = "";
if (num == 0)
   fruitToPrint = "Cherries";
else if (num == 1)
   fruitToPrint = "Oranges";
else if (num == 2)
   fruitToPrint = "Plums";
else if (num == 3)
   fruitToPrint = "Bells";
else if (num == 4)
   fruitToPrint = "Melons";
else if (num == 5)
   fruitToPrint = "Bars";
else
   System.out.println("Couldn't assign fruit from num=" + num);

System.out.println("The corresponding fruit was " + fruitToPrint); 
于 2013-03-28T02:23:45.083 回答
0

这是我认为遵循最佳编程实践的问题的替代解决方案。对于您的分配,这可能比数组更不允许,并且将是您在 StackOverflow 上得到答案的一个致命的赠品,但问题将有助于使用enum带有int->enum映射的类型:

enum Fruit {
   Cherries(1), 
   Oranges(2), 
   Plums(3), 
   Melons(4), 
   Bars(5);

   private static final Map<Integer, Fruit> lookupMap = new HashMap<Integer, Fruit>();
   static {
      for (Fruit fruit : Fruit.values()) {
         lookupMap.put(fruit.getLookup());
      }
   }

   static Fruit fromLookup(int lookup) {
      return lookupMap.get(lookup);
   }

   private final int lookup;       

   private Fruit(int lookup) {
      this.lookup = lookup;
   }

   int getLookup() {
      return lookup;
   }
}

void printEnumExample() {
   int fruitToPrint = 4;
   System.out.println(Fruit.fromLookup(fruitToPrint)); // <- This will print "Melons"
}
于 2013-03-28T02:30:38.930 回答