这是我第一次使用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)));
}