Увеличьте число с символом в Java - PullRequest
0 голосов
/ 23 ноября 2018

У меня проблема с увеличением числа и комбинаций символов.То, что я хочу, это увеличение с 001 до ZZZ

Пример: 001 , 002 , ..., 999 , 00A , ..., 00Z , 0AA , ..., ZZZ

Мой код выглядит следующим образом:

int numberA = 1000;
int numberB = 1024;
int numberC = 1025;

/*
 * Some formulae here
 */

System.out.println(numberA);
//Result: 00A
System.out.println(numberB);
//Result: 00Z
System.out.println(numberC);
//Result: 0A0

Есть ли какие-нибудь формулы для решения этой проблемы?

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018

Вы можете отформатировать свой номер как номер 36 (вы хотите использовать 36 различных цифр: 0 - 9 = 10 цифр + A - Z = 26 цифр).

Чтобы получить его точно внужный формат (верхний регистр, с ведущими нулями):

String s = Integer.toString(numberA, 36).toUpperCase();
String result = String.format("%3s", s).replace(' ', '0');
0 голосов
/ 23 ноября 2018

Вот код, который будет печатать последовательность от 001 до zzz.

public static void main(String[] args){
        String result="";
        int i=0;    
        while(!result.equals("ZZZ")){
            String s = Integer.toString(i, 36).toUpperCase();
             result = String.format("%3s", s).replace(' ', '0');
            System.out.println("\t "+result);
            i++;
        }
}
0 голосов
/ 23 ноября 2018

Может быть, следующее поможет вам начать; -)

final Integer radix = 36; // that's 0-9 A-Z
final Double limit = Math.pow(radix.doubleValue(), 3.0 /* max number of 'chars' */);
Stream.iterate(0, i -> i+1)
        .map(i -> Integer.toString(i, radix))
        .map(s -> String.format("000%S", s)
                        .substring(s.length())) // leading 0, uppercase
        .limit(limit.longValue())
        .forEach(System.out::println);

Или просто:

String radix36 = Integer.toString(yourIntThatYouCanIncrement, 36);

Конечно, если вам требуется формат 00 # (начальные нули и заглавные буквы)) вы должны применять эти функции тоже.Комментарий Хольгерса уже содержит короткий вариант, объединяющий верхние / верхние нули:

String formatted = String.format("000%S", radix36)
                         .substring(radix36.length());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...