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

N01*_*zii 1 java arrays

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

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

有这样的数组:

charArray[0] = e;
charArray[1] = b;
charArray[2] = p;
Run Code Online (Sandbox Code Playgroud)

并将其翻译成:

numArray[0] = 5;
numArray[1] = 2;
numArray[2] = 16;
Run Code Online (Sandbox Code Playgroud)

因此它会将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数组非常长.)

Ted*_*opp 7

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

numArray[i] = charArray[i] - 'a' + 1;
Run Code Online (Sandbox Code Playgroud)

更"按书"的方式做到这一点:

final String letters = "abcdefghijklmnopqrstuvwxyz";
. . .
numArray[i] = letters.indexOf(charArray[i]) + 1;
Run Code Online (Sandbox Code Playgroud)

然后任何位置i,使得charAray[i]不是小写字母将最终在0 numArray[i].有了这个伎俩,价值numArray[i]将是不可预测的.