Excel单元格的地址表示很有趣,它使用字母来表示列号,比如:
A表示第1列,
B表示第2列,
Z表示第26列,
AA表示第27列,
AB表示第28列,
BA表示第53列,
....
当然Excel的最大列号是有限度的,所以转换起来不难。
如果我们想把这种表示法一般化,可以把很大的数字转换为很长的字母序列呢?
本题目既是要求对输入的数字, 输出其对应的Excel地址表示方式。
例如,
输入:
26
则程序应该输出:
Z
再例如,
输入:
2054
则程序应该输出:
BZZ
我们约定,输入的整数范围[1,2147483647]
public class Main { static String[] x = new String[27]; static long count; public static void main(String[] args) { x[0] = ""; for(int i = 1; i < x.length; i ++) { x[i] = String.valueOf((char) ('A' + i - 1)); } for(int a = 0; a < 27; a ++) { for(int b = (a == 0) ? 0 : 1; b < 27; b ++) { for(int c = (b == 0) ? 0 : 1; c < 27; c ++) { for(int d = (c == 0) ? 0 : 1; d < 27; d ++) { for(int e = (d == 0) ? 0 : 1; e < 27; e ++) { for(int f = (e == 0) ? 0 : 1; f < 27; f ++) { /** * ①比较数字和输入是否相等,相等则输出英文 * ②输出英文打表,数字对比 */ StringBuilder sb = new StringBuilder(); sb.append(x[a]); sb.append(x[b]); sb.append(x[c]); sb.append(x[d]); sb.append(x[e]); sb.append(x[f]); System.out.println(count + " " + sb); count ++; } } } } } } } }