2015-10-14 3 views
1

Я пытаюсь создать программу, которая стимулирует сбор карты из колоды. Я попытался использовать класс Random, чтобы выбрать suit и rank, но я не могу заставить его работать. Это мой код до сих пор.Как выбрать случайную строку из списка

String[] rank = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"}; 
    int idx = new Random().nextInt(rank.length); 
    String random = (rank[idx]); 

    String[] suit = {"Clubs", "Diamonds", "Hearts", "Spades"}; 
    int idx = new Random().nextInt(suit.length); 
    String random = (suit[idx]); 

    System.out.println("The card you picked is " + Arrays.toString(rank) + " of " + Arrays.toString(suit)); 

Я уверен, что это очень просто, но я относительно новичок в Java, поэтому любая помощь приветствуется!

+1

** «но я не могу заставить его работать» ** вы можете сделать лучше, чем это :) –

+0

У вас есть 2 переменные с одинаковым именем idx, random и вы печатаете неправильную переменную, должны быть 2 случайных значения. –

+0

Вы повторяете свои переменные, 'idx' и' random' используют другое имя. –

ответ

3

Вы сделали это правильно. Вам просто нужно напечатать нужные переменные:

String[] rank = // ... 
int rankIndex = new Random().nextInt(rank.length); 
String randomRank = rank[rankIndex]; 

String[] suit = // ... 
int suitIndex = new Random().nextInt(suit.length); 
String randomSuit = suit[suitIndex]; 

System.out.println("The card you picked is " + randomRank + " of " + randomSuit); 
0

Пожалуйста, не забудьте добавить, что не так, вы не указали, какую проблему у вас есть.

Но я ожидаю это следующее:

1) Строка случайных объявляется дважды 2) Arrays.toString() не требуется

System.out.println("The card you picked is " + **Arrays.toString(rank)** + " of " + Arrays.toString(suit)); 

Почему вы используете Arrays.ToString ()?

String rankstr = (rank[idx]); 
String suitStr = (suit[idx]); 
    System.out.println("The card you picked is " + rankStr + " of " + suitStr); 
1

Проблема здесь: System.out.println("The card you picked is " + Arrays.toString(rank) + " of " + Arrays.toString(suit));. Вы печатаете свой полный список предметов каждый раз.

Что вам нужно сделать, это разместить (rank[idx]) и (suit[idx]); в строковые переменные и распечатать их.

String[] rank = {"Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"}; 
    int idx = new Random().nextInt(rank.length); 
    String randomRank = (rank[idx]); 

    String[] suit = {"Clubs", "Diamonds", "Hearts", "Spades"}; 
    idx = new Random().nextInt(suit.length); 
    String randomSuit = (suit[idx]); 
    System.out.println("The card you picked is " + randomRank + " of " + randomSuit); 
0

Вы повторяющий имена переменных idx и random, выбирать различные имена и вывода, как это:

System.out.println("The card you picked is " +random2+ " of " +random); 
//The card you picked is 2 of Spades 

Живая Java Пример:

http://ideone.com/9asht6

Смежные вопросы