【问题标题】:How to display a certain string for an integer?如何显示整数的某个字符串?
【发布时间】:2014-11-01 22:21:05
【问题描述】:

我必须为课堂制作一个扑克骰子游戏。我能够成功地随机从 1 到 6 的五个数字(类似于掷骰子五次)。但是,我需要为 1 显示“九”,为两个显示“十”,等等。我使用数组来保存数字。我似乎无法弄清楚如何为每个 int 分配一个字符串输出。

public static void main(String[] args) {

    int[] player = new int[5];
    String[] cards = new String[] {"Nine", "Ten", "Jack", "Queen", "King", "Ace"};

    System.out.println("User: " + playerHand(player, cards));

}
public static String playerHand(int[] player, String[] cards) {
    String hand = "";
    for (int i = 0; i < player.length; i++) {
        player[i] = (int) (Math.random() * (6 - 1) + 1);
        hand += player[i] + " ";
    }

    return hand;
    }

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    您已将字符串放入数组中,因此您只需将数组中的一个元素添加到您的手字符串中:

    hand += cards[player[i]] + " ";
    

    但是,您的代码仍然存在问题。您获得的随机数如下:

    player[i] = (int) (Math.random() * (6 - 1) + 1);
    

    您可能希望这是一个从 1 到 6 的数字。但是,Math.random() 返回一个从 0(包括)到 1(不包括)的双精度数。这意味着 player[i] 永远不会被分配 6。这种错误解决了另一个错误:由于 Java 数组是从零开始的,因此索引为 6 的元素不存在。 (因此,如果选择了 6,您的程序将中止并显示错误消息。)但是,数字 0 以及因此单词“Nine”将永远不会出现在您的解决方案中。所以你必须把这两行改成:

    hand += cards[player[i] - 1] + " ";
    

    player[i] = (int) (Math.random() * 6 + 1);
    

    分别。

    考虑将cards 数组设为静态类成员;那么您不需要将数组作为参数传递给playerHand 方法。

    【讨论】:

    • @Robbie - 还记得数组是从零开始的 - 所以cards[0] 是“九”,但你的骰子是 1,所以你想要 cards[dieRoll-1]
    • @Stephen P. 你说得对,我错过了。我编辑了答案。
    【解决方案2】:

    你可以使用一个开关块

    switch(array[i]){
    case 1:
    printf("One\n");
    break;
    case 2:
    printf("Two\n");
    break;
    

    等等……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      • 2014-08-03
      • 2014-07-31
      • 1970-01-01
      • 2020-03-17
      相关资源
      最近更新 更多