2013-05-21 50 views
0

我在创建一个以字母和数字组合为索引的二维矩阵中处于亏损状态。二维字母数字组合索引数组

通常使用array[0][1]array[3][2]来访问阵列。我该如何使用字母array[A][1]array[D][2]来查找数组?它也应该使用与用户想要的一样多的字母。例如,用户需要10行,因此我们有array[J][1,2,etc.]

+0

你的问题还不清楚。用户是否将会使用诸如'a [A] [10]'等参考书写代码的开发人员?如果不是,用户将如何输入这些参考?如何定义一个包含字母和数字的集合键是更基本的问题?这里特别需要一个数组吗? –

回答

0

您可以将字符转换成像指数:

char x = ...; 
int index = x-'A'; 
array[index][3] 
+0

我不明白。当用char'A'减去一个int时发生了什么?在创建像这样的数组时,我是否浪费了使用数字索引的行? –

+0

从'A'到'J'的字符减去'A'将为0到9,这可能是该数组的索引 – BlackJoker

0

如果你想通过A或d具体指标,而不是索引保持这些价值,这通常是由制作“类完成不变”。还有其他一些方法,比如使用枚举,我不会在这里讨论,但是如果他们感兴趣的话可以查看它们。

在java中,类的常量被指定如下。

public static int A = 0;  
public static int B = 1; 
... 
public static int Z = 25; 

从这里你可以索引你的问题。

int value = array[A][1]; // which means array[0][1] 
0

这听起来像你想要一个关联数组的接口。是否有任何理由认为Map不适合这个问题? TreeMap将按字母顺序迭代并保留索引的ABC顺序。

Map<String, int[]> map = new TreeMap<String, int[]>(); 
map.put("A", new int[]{1,2,3,4,5}); 
+0

这可能不起作用,因为矩阵由用户确定,这意味着行A,B ,C等。没有设置。用整数很容易做到这一点,但用字母表示它有点困难。 –