将字符数组转换为Java中的数字数组

时间:2013-05-05 18:45:59

标签: java arrays

所以,我需要做的是将一个字符数组转换为一个数组数组。

我知道这听起来像是一个奇怪的请求,但这就是我一直想做的事情:

有这样的数组:

charArray[0] = e;
charArray[1] = b;
charArray[2] = p;

并将其翻译成:

numArray[0] = 5;
numArray[1] = 2;
numArray[2] = 16;

所以它会将char转换成字母表中的位置(例如“a”是第一个字母,“b”是第2个字母等)

这样做的最佳方法是什么?我打算一个接一个地尝试,但后来意识到我会有太多的代码行,它只是大量嵌套的if语句,而且我认为可能有更好的方法来做它。

(我的方式是if charArray[0] = a then numArray[0] = 1,然后遍历每一个字母,直到你到达if charArray[0] = z then numArray[0] = 26,但这需要在char数组中有26个不同的if语句PER CHAR,在我看来,这可能是一种可怕的方式,因为我的char数组非常长。)

3 个答案:

答案 0 :(得分:7)

您可以使用技巧对每个索引i

numArray[i] = charArray[i] - 'a' + 1;

更多“通过书本”的方式是:

final String letters = "abcdefghijklmnopqrstuvwxyz";
. . .
numArray[i] = letters.indexOf(charArray[i]) + 1;

然后任何位置i使得charAray[i]不是小写字母,最终会在numArray[i]中为0。有了这个技巧,numArray[i]的值将是不可预测的。

答案 1 :(得分:1)

你可以简单地说:

numArray[i] = charArray[i] - 'a' + 1;

<强>解释

查看 ascci table ,您会看到每个 char 小数值

a十进制值为97.所以你从中删除97并添加1.你得到1.

b ... z的相同内容,从98(a)删除97(b)将为1,并且您添加1以获得2。等等..

答案 2 :(得分:0)

假设所有字符都是小写的,您可以写:

numArray[0]  = (charArray[0] - 'a' + 1);

如果您使用小写和大写,则可以使用if语句,如:

if (charArray[0] >= 'A' && charArray[0] <= 'Z') {
  numArray[0]  = (charArray[0] - 'A' + 1);
} else {
  numArray[0]  = (charArray[0] - 'a' + 1);
}