Member 13576973 Ответов: 2

Как напечатать случайное число из 2d массива


String[][] table = new String[][] { {"Spade","Diamond","Heart","Club"}, {"Ace", "2","3","4","5","6","7","8","9","Jack","Queen","King",} };
      
    String LuckyCard;
     for (int r = 0; r < table.length; r++)
    {
        for (int c = 0; c < table[r].length; c++)
            {
            int cardLucky = (int)(Math.random()*13) + 1; // generating random card

int suitLucky = (int)(Math.random()*4) + 1; // generating random suit

        
LuckyCard = "Lucky Card is " + table[cardLucky][suitLucky];
                    System.out.println(LuckyCard);
                  break;
        }}
   for(int i = 0; i < table.length; i++) {
            for(int j = 0; j < table[i].length; j++) {
                System.out.print(table[i][j] + " ");
            }
        }

}


Что я уже пробовал:

Я понимаю, что это часть моего кода "LuckyCard = "Счастливая карта" + таблица[cardLucky][suitLucky];" не работает, потому что мой массив-это строка, и та математика.случайные является для целых чисел. Есть ли другой способ сделать это, чтобы выбрать случайную карту из 2d-массива?

2 Ответов

Рейтинг:
1

Peter Vegter

В этом случае вы должны использовать не 2d массив, а только два массива:

String[] suits = {"Spades","Diamonds","Hearts","Clubs"};
String[] cards = {"Ace", "2","3","4","5","6","7","8","9","Jack","Queen","King"};

int cardLucky = (int)(Math.random() * 13);
int suitLucky = (int)(Math.random() * 4);

LuckyCard = "Lucky Card is " + cards[cardLucky] + " of " + suits[suitLucky] + ".";


Member 13576973

Учитель требовал от нас использовать 2d массив

Peter Vegter

В этом случае вы можете создать массив 2d-карт[4][13], который вы заполняете (делайте это в цикле):

String[][] table = new String[][] { { "Spade Ace", "Spade 2", ...}, { "Diamond Ace", "Diamond 2", ...}, { "Heart Ace", "Heart 2", ...}, { "Club Ace", "Club 2",...}};

и выберите карту с:

LuckyCard = "Счастливая карта есть" + таблица[suitLucky][cardLucky];

Но это просто не лучший способ сделать это...

Рейтинг:
0

Patrice T

Научитесь правильно делать отступы в вашем коде, это покажет его структуру, и это поможет чтению и пониманию. Это также помогает выявлять структурные ошибки.

  String[][] table = new String[][] { {"Spade","Diamond","Heart","Club"}, {"Ace", "2","3","4","5","6","7","8","9","Jack","Queen","King",} };
  
  String LuckyCard;
  for (int r = 0; r < table.length; r++)
  {
    for (int c = 0; c < table[r].length; c++)
    {
      int cardLucky = (int)(Math.random()*13) + 1; // generating random card
  
      int suitLucky = (int)(Math.random()*4) + 1; // generating random suit
  
  
      LuckyCard = "Lucky Card is " + table[cardLucky][suitLucky];
      System.out.println(LuckyCard);
      break;
    }
  }
  for(int i = 0; i < table.length; i++) {
    for(int j = 0; j < table[i].length; j++) {
      System.out.print(table[i][j] + " ");
    }
  }

}

Профессиональные редакторы программистов имеют эту функцию и другие, такие как сопоставление скобок и подсветка синтаксиса.
Блокнот++ Главная Страница[^]
личные[^]

Этот код не имеет смысла, вам нужно объяснить, что вы пытаетесь сделать.
table это не 2d массив карт, это список из 2 списков, первый из которых представляет собой список мастей, а второй-список значений карт.
Итак, это:
LuckyCard = "Lucky Card is " + table[cardLucky][suitLucky];

должен быть заменен на:
LuckyCard = "Lucky Card is " + table[1][cardLucky] + table[0][suitLucky];

у вашего кода есть много других проблем, но мы должны знать, что вы пытаетесь сделать.