用Java中的字符增加数字

时间:2018-11-23 12:28:36

标签: java java-8

我在增加数量和字符组合方面遇到问题。 我想要的是增加 001 ZZZ

  

示例: 001 002 ,..., 999 00A ,...,< strong> 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 :(得分:5)

以下内容可能会帮助您入门;-)

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#格式(前导零和大写字母),则也需要应用该函数。 Holgers评论已经包含一个简短的变体,可以结合大写/前导零:

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

答案 1 :(得分:3)

您可以将数字格式设置为以36为底的数字(您要使用36个不同的数字:0-9 = 10个数字+ A-Z = 26个数字)。

要完全按照您想要的格式(大写,带有前导零)获取它:

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

答案 2 :(得分:1)

这是将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++;
        }
}