gpt4 book ai didi

java - 从字符串计算下一个值

转载 作者:行者123 更新时间:2023-12-02 07:01:47 25 4
gpt4 key购买 nike

在我的代码中,我试图让它计算随机字符串的下一个值,其中字符串遵循以下格式:

AAA-AAAA-AAA-AAA

下一个值将是 AAA-AAAA-AAA-AAB,到达 AAA-AAAA-AAA-AAF,依次到达 AAA-AAAA-AAA-AA1,依此类推,直到达到 9。

从那里开始,它应该继续增加前面的字母,使其成为 AAA-AAAA-AAA-ABA,并重新开始整个过程​​。

我到底如何在 Java 中完成这个任务?我正在考虑递归,但我不知道从哪里开始。

最佳答案

最简单的是将字符串与整数相互转换。从您的帖子中,我猜测您的数字顺序是 ABCDEF123456789 (0 到 14),所以我将使用它。 0123456789ABCDEF 的顺序更为常见,在这种情况下,您可以使用库函数提供的十六进制。

private static final char[] digitMap = new char[] {'A','B','C','D','E','1','2','3','4','5','6','7','8','9'};
private static final int base = digitMap.length;
private static final Map<Character, Integer> reverseDigitMap = new HashMap<>();
static {
// populate the reverse digit map
for(int i=0;i<base;i++) {
reverseDigitMap.put(digitMap[i], i);
}
}

public static String toMyFormatString(long number) {
StringBuilder res = new StringBuilder();
// Add 13 digits to string in reverse order
for(int i=0;i < 13;i++) {
// Add dashes at correct locations
if(i==3 || i == 6 || i == 10) { res.append('-') };
// Output a character
res.append(digitMap[number % base]);
number = number / base;
}
// Change the order
res.reverse();
return res.toString();
}

/**
* @throws NullPointerException when an incorrect digit is encountered
**/
public static long fromMyFormatString(String numberString) {
long result = 0;
// Number is 16 characters of which 13 are digits
for(int i = 0; i < 16; i++) {
char digit = numberString.charAt(i);
// Skip "-"
if(digit == '-') { continue; };
result = result * base; // We're adding the next digit
result = result + reverseDigitMap.get(digit);
}
return result;
}

关于java - 从字符串计算下一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16575009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com