2014-11-01 2 views
0

Я должен сделать покерную игру Dice для класса. Я могу успешно выполнить случайные пять чисел от 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; 
    } 

ответ

1

Вы поместили свои строки в массиве, так что вы просто добавить элемент из массива ручной строки:

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

Существует, однако, до сих пор проблемы с вашим кодом. Вы получаете случайные числа следующим образом:

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

Вы, вероятно, ожидать, что это число от 1 до 6. Однако Math.random() возвращает двойной от 0 (включительно) до 1 (включительно). Это означает, что плеер [i] никогда не будет назначен. 6. Этот тип ошибки решает другую ошибку: поскольку массивы Java основаны на нуле, элемент с индексом 6 не существует. (Таким образом, если бы было выбрано 6, ваша программа была бы прервана сообщением об ошибке.) Но все же число 0 и, следовательно, слово «Девять» никогда не появятся в вашем решении. Таким образом, вы должны изменить две строки:

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

и

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

соответственно.

Рассмотрите возможность создания массива cards статического члена класса; то вам не нужно передавать массив методу playerHand в качестве аргумента.

+1

@Robbie - Также напомним, что массивы с нуля - так 'карты [0]' является "Девять", но ваш die-roll - 1, поэтому вы хотите 'cards [dieRoll-1]' –

+0

@Stephen P. Вы правы, я пропустил это. Я отредактировал ответ. – Hoopje

0

Вы можете использовать блок переключения

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

и т.д ...