这是我第一次使用Java,所以请多多包涵。因此,想象一下26x26的棋盘格(或棋盘格)。我需要知道如何正确将棋盘格的坐标转换为相应的行号和列号。例如,z19对应于第26列和第19行上的片段。我已经使用哈希表获取了大部分代码,但是我遇到的麻烦是当我输入两位数时,我得到的输出是两位数,但分开了。例如:

Input: z19
Output:
26
1
9


我该如何解决这个问题?
这是我的方法:

public static void hash(String coordinates){

        HashMap hash = new HashMap();
        hash.put("a", 1);
        hash.put("b", 2);
        hash.put("c", 3);
        hash.put("d", 4);
        hash.put("e", 5);
        hash.put("f", 6);
        hash.put("g", 7);
        hash.put("h", 8);
        hash.put("i", 9);
        hash.put("j", 10);
        hash.put("k", 11);
        hash.put("l", 12);
        hash.put("m", 13);
        hash.put("n", 14);
        hash.put("o", 15);
        hash.put("p", 16);
        hash.put("q", 17);
        hash.put("r", 18);
        hash.put("s", 19);
        hash.put("t", 20);
        hash.put("u", 21);
        hash.put("v", 22);
        hash.put("w", 23);
        hash.put("x", 24);
        hash.put("y", 25);
        hash.put("z", 26);
        hash.put("1", 1);
        hash.put("2", 2);
        hash.put("3", 3);
        hash.put("4", 4);
        hash.put("5", 5);
        hash.put("6", 6);
        hash.put("7", 7);
        hash.put("8", 8);
        hash.put("9", 9);
        hash.put("10", 10);
        hash.put("11", 11);
        hash.put("l2", 12);
        hash.put("13", 13);
        hash.put("14", 14);
        hash.put("15", 15);
        hash.put("16", 16);
        hash.put("17", 17);
        hash.put("18", 18);
        hash.put("19", 19);
        hash.put("20", 20);
        hash.put("21", 21);
        hash.put("22", 22);
        hash.put("23", 23);
        hash.put("24", 24);
        hash.put("25", 25);
        hash.put("26", 26);
    String word = new String(coordinates);
    char array[] = word.toCharArray();
    for(char c: array) {
        System.out.println(hash.get(String.valueOf(c)));
    }
    }


我忘记提及的一件事:我还希望能够同时输入不同的坐标点。例如,如果我输入以下内容:

Input: a4c23d17


我希望它输出以下内容:

1
4
3
23
4
17

最佳答案

您使问题复杂化了。尝试这个:

// split coordinates string into (x, y) pairs by using
// regex lookahead to find the next alphabetical character
for (String coord : "a4c23d17".split("(?=[a-z])")) {
    // subtract the ascii value of 'a' from
    // the first char to get the numeric offset
    System.out.println(coord.charAt(0) - 'a' + 1);
    // parse the remainder as an integer
    System.out.println(Integer.parseInt(coord.substring(1)));
}

07-24 09:49