Loading

Excel地址

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 ++;
                            }
                        }
                    }
                }
            }
        }
    }
}

 

posted @ 2018-03-23 19:17  机智的小白  阅读(858)  评论(0编辑  收藏  举报