我需要一个java方法,它接受一个整数然后递增它并为你提供相应的alpha字符。像这样:
public String getAlpha(Integer number) {
...
}
因此,如果我将number
值等于0
,那么它应该递增并返回字母a
。如果我将25
传递给它,那么它应该返回z
字母。如果我将数字26
传递给它,那么它应该返回aa
。如果我将数字27
传递给它,那么它应该返回ab
,依此类推。
alpha几乎模拟excel表格列的表示方式,我需要做的就是通过传递一个数字从方法中获取alpha值。没有设置限制,但从getAlpha
返回的字符串必须最多为15
个字符且最少为1
个字符。
答案 0 :(得分:1)
我相信这会做你想要的,我不知道它是否可以更有效地完成:
static void printCode(int code) {
final StringBuilder buffer = new StringBuilder();
do {
final int digit = (code - 1) % 26;
buffer.insert(0, (char)(digit + 'a'));
code = (code - digit - 1) / 26;
} while (code > 0);
System.out.println(buffer);
}
答案 1 :(得分:0)
这是在Java中从0到25之间的数字生成-z的方法:
protected static String getLetter(int code) {
if (code >= 0 && code <= 25)
return "" + (char) (code + 'a');
else
throw new IllegalArgumentException("char code is out of bound: " + code);
}
其余的只是模数学。
答案 2 :(得分:0)
它与Excel列命名相同:
public class Calculator {
private static String[] letters = new String[]{
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
};
public static void main(String[] args) {
System.out.println(calculate(731));
}
public static String calculate(int row) {
return calculateRecursive(row - 1, "");
}
private static String calculateRecursive(int row, String res) {
String val = letters[row % letters.length] + res;
int i = row / letters.length;
if(row >= letters.length) {
return calculateRecursive(i - 1, val);
}
return val;
}
}