Создать "красивые" номера на java
Написал код который генерирует автомобильные номера в формате A234MH197. Подскажите как сделать только "красивые" номера? Пример А777МН197, то есть должно быть 3 парные цифры, 000, 111, 222, 333 и т.д, буквы могут быть разными.
class GenerationCarOfNumbers
{
final char[] carLetters = {'А', 'В', 'Е', 'К', 'М', 'Н', 'О', 'Р', 'С', 'Т', 'У', 'Х'};
final int MIN_VALUE_REGION = 1;
final int MAX_VALUE_REGION = 199;
final int MIN_VALUE_NUMBER_CAR = 0;
final int MAX_VALUE_NUMBER_CAR = 10;
String str = new String(carLetters);
//общая работа
public void addCarNumber()
{
for(int i = 0; i < 10; i++)
{
generateTheSecondLetterOfTheNumber();
generateTheThirdLetterOfTheNumber();
generateTheFirstLetterOfTheNumber();
generationOfTheRegion();
generationOfFiguresOfNumber();
test();
}
}
//первая буква номера
public char generateTheSecondLetterOfTheNumber()
{
int X = (int) (Math.random() * str.length());
//String testX = Character.toString(resultX);
return carLetters[X];
}
//генерация цифр номера
public int generationOfFiguresOfNumber()
{
return (int) ((Math.random() * (MAX_VALUE_NUMBER_CAR - MIN_VALUE_NUMBER_CAR)) + MIN_VALUE_NUMBER_CAR);
}
//вторая буква номера
public char generateTheThirdLetterOfTheNumber()
{
int Y = (int) (Math.random() * str.length());
//String testY = Character.toString(resultY);
return carLetters[Y];
}
//третья буква номера
public char generateTheFirstLetterOfTheNumber()
{
int Z = (int) (Math.random() * str.length());
//String testZ = Character.toString(resultZ);
return carLetters[Z];
}
//генерация региона
public int generationOfTheRegion()
{
return (int) ((Math.random() * (MAX_VALUE_REGION - MIN_VALUE_REGION)) + MIN_VALUE_REGION);
}
//вызов на экран
public void test()
{
String test1 = String.format("%s%d%d%d%s%s%d", generateTheSecondLetterOfTheNumber(),
generationOfFiguresOfNumber(), generationOfFiguresOfNumber(),
generationOfFiguresOfNumber(), generateTheThirdLetterOfTheNumber(),
generateTheFirstLetterOfTheNumber(), generationOfTheRegion());
System.out.println(test1);
}
}
Ответы (1 шт):
Автор решения: FDmitriyA
→ Ссылка
Посидев подумав над этим заданием, я пришел к выводу что такой код не подходит для реализации данного задания, так как такой метод позволяет составить рваный метод номерного знака и нет уверенности что не будет пропущен какой то вариант "красивого" номера.
Получается что тут подходит только метод перебора циклами:
- Первый цикл перебирает буквы из массива и создает первую букву номера
- Второй цикл перебирает цифры от 0 до 9, потому что в номерах могут быть только такие цифры
- Третий и четвертый цикл перебирают массив с буквами и создают вторую и третью букву номера
- Пятый цикл перебирает цифры от 1 до 199, количество регионов в России.
Пример:
final String[] carLetters = new String[] {"А", "В", "Е", "К", "М", "Н", "О", "Р", "С", "Т", "У", "Х"};
for (String letter : carLetters) {
for (int figure = 0; figure < 10; figure++) {
for (String letter_2 : carLetters) {
for (String letter_3 : carLetters) {
for (int m = 1; m <= 199; m++) {
String numberCar = String.format("(%s)(%d%d%d)%s%s(%d)", letter, figure, figure, figure, letter_2, letter_3, m);
System.out.println(numberCar);
}
}
}
}
}