题目要求![](https://img-blog.csdnimg.cn/direct/74c157b194c5463d98926df6f00e2da8.png)
问题分析
细心的读者会发现,这个题其实就类似与10进制转化26进制,只不过我们只需要添加hashmap的26组键值对,不过要注意的是z对应的是num%26==0,
代码
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
StringBuilder sb = new StringBuilder();
HashMap<Integer, Character> hashMap = new HashMap<>();
// 定义26组键值对
hashMap.put(0, 'Z');
for (int i = 1; i < 26; i++) {
char c = (char)('A' + i - 1);
hashMap.put(i, c);
}
// 打印哈希表中的键值对
while (num!=0)
{
int first=num/26;
// 不断取余获取map中的对应字母
int second=num%26;
sb.append(hashMap.get(second));
// num被整除时,second==0,字母是z
if (second==0)
{
first--;
}
num=first;
}
System.out.print(sb.reverse());
}
}