Member 13815974 Ответов: 2

Как мне сделать этот код на java


Мне нужно создать код, который случайным образом генерирует 1 миллион различных номерных знаков транспортных средств.
Тарелки нужны:
- состоять из 3-х чисел
- состоять из 3 букв без учета гласных
-буквы и цифры должны быть разделены тире
- в конце таблички необходимо добавить случайно сгенерированный код страны, он должен быть одним из следующих ( CA, ZN, MP, EC, L, GP, NC, FS, NW)
- все должно быть отображено в графическом интерфейсе, и когда вы нажимаете кнопку generate, он генерирует все

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

Я пробовал создавать массивы и циклы, но мой код не работает

Patrice T

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

2 Ответов

Рейтинг:
2

Richard MacCutchan

Trail: создание графического интерфейса с помощью JFC/Swing (учебные пособия Java™ )[^], Random (Java Platform SE 8 )[^].

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


Maciej Los

5ed!

Рейтинг:
0

CPallini

Предполагая пять гласных (то есть учитывая 'Y- согласный), вы могли бы

10 ^ 3 * 21 ^ 3 * 9 = 83349000
разные тарелки.

Таким образом, вы можете выбрать случайное число в [0..83348999] диапазон и генерировать строку пластин с его помощью. Я собираюсь показать вам код:
import java.util.Random;

class Plate
{
  static final int PLATES = 83349000;
  static String plate(int n)
  {
    char [] dgt = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
    char [] letter = { 'B', 'C', 'D', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'V', 'W', 'X', 'Y', 'Z' };
    String [] cc = { "CA", "ZN", "MP", "EC", "L", "GP", "NC", "FS", "NW" };

    String p = "";

    if ( n<0 || n >= PLATES) return p;
    int rem;
    for ( int i = 0; i<3; i++)
    {
      rem = n % 10;
      p += dgt[rem];
      n = (n - rem) / 10;
    }
    p += "-";

    for ( int i = 0; i<3; i++)
    {
      rem = n % 21;
      p += letter[rem];
      n = (n - rem) / 21;
    }
    p += "-";
    rem = n % 9;
    p += cc[rem];
    return p;
  }

  public static void main(String arg[])
  {
    int n;
    Random rand = new Random();
    // generate and show 10 random plates (repetition is allowed)
    for (n=0; n<10; ++n)
    {
      int r = rand.nextInt(PLATES);
      System.out.printf( "%3d %s\n", (n+1), plate( r) );
    }

  }
}

Теперь вам нужно сгенерировать 1000000 таких пластин (и я предполагаю), избегая повторений.
Вы можете использовать (если ваш программный блок имеет достаточно памяти) алгоритм, показанный здесь: Случайное извлечение 5 карт из колоды[^] чтобы сделать трюк.

Наконец, вы должны создать GUI для этого, возможно, используется, как и предполагалось, Swing Framework. Этот художественный шаг очень зависит от вас.


Maciej Los

5ed!

CPallini

Большое тебе спасибо, Мацей.