簡體   English   中英

用Java中的字符增加數字

[英]Increase number with character in Java

我有一個增加數字和字符組合的問題。 我想要的是從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

有什么方法可以解決這個問題嗎?

也許以下內容可以幫助您入門;-)

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#-format(前導零和大寫),您也需要應用這些功能。 Holgers注釋已經包含了一個簡短的變體來組合大寫/前導零:

String formatted = String.format("000%S", radix36)
                         .substring(radix36.length());

您可以將您的號碼格式化為基數為36的數字(您希望使用36個不同的數字:0 - 9 = 10位+ A - Z = 26位)。

要以您想要的格式獲得它(大寫,帶前導零):

String s = Integer.toString(numberA, 36).toUpperCase();
String result = String.format("%3s", s).replace(' ', '0');

這是將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++;
        }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM