将字符数组转换为Java数组数组
问题描述:
所以,我需要做的是将一个字符数组转换为数字数组。将字符数组转换为Java数组数组
我知道这听起来像一个奇怪的要求,但这里是我一直在努力做的事情:
有一个数组是这样的:
charArray[0] = e;
charArray[1] = b;
charArray[2] = p;
,并将它translatated到:
numArray[0] = 5;
numArray[1] = 2;
numArray[2] = 16;
所以到它在字母表中的位置,将翻译的字符(如“a”是第一个字母“b”是第二等)
这样做的最好方法是什么?我试图一个接一个地做,但后来我意识到我会有太多的代码行,它只是嵌套if语句,我认为可能有更好的方法来做到这一点。 (我的方法是if charArray[0] = a then numArray[0] = 1
,并经过这样的每一个字母,直到你到达if charArray[0] = z then numArray[0] = 26
,但是这将需要26个不同的if语句在char数组中,这将是一个可怕的方式。这样做在我看来,因为我的字符数组极长)
答
您可以使用一个技巧对于每个索引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]
的价值将是不可预知的。
答
你可以简单:
numArray[i] = charArray[i] - 'a' + 1;
说明:
看着ascci table你会看到每个char的十进制值。
a
有十进制值的97所以,如果你删除它97再加1你得到1
同为b
... z
,删除97(a
)从98(b
)将于1,你加1得到2 ..等..
答
假定所有字符都是小写的,你可以写:
numArray[0] = (charArray[0] - 'a' + 1);
如果你有小写和大写,你可以,如果使用的语句,如:
if (charArray[0] >= 'A' && charArray[0] <= 'Z') {
numArray[0] = (charArray[0] - 'A' + 1);
} else {
numArray[0] = (charArray[0] - 'a' + 1);
}