从CharArray计算数字

时间:2015-09-28 17:54:42

标签: java android arrays string char

我有以下代码

 private static int getYear(char[] charArray)
{
    return (int)charArray[0] * 1000 + (int)charArray[1] * 100 + (int)charArray[2] * 10 + (int)charArray[3];
}

此摘录计算4元素char数组中的数字。从“2015”开始,有55343。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

>>> np.insert(a,[0,a.size],[88,77])
array([ 88,   2,  56,   4,   8, 564,  77])

答案 1 :(得分:2)

假设练习的目的不是使用StringparseInt,您需要将字符'0'转换为'9'到数字09。这是通过减去字符'0'来完成的,所以你得到:

private static int getYear(char[] charArray)
{
    return (charArray[0] - '0') * 1000
         + (charArray[1] - '0') * 100
         + (charArray[2] - '0') * 10
         + (charArray[3] - '0');
}

这是因为Java以Unicode字符存储字符串。 Unicode是ASCII字符集的(巨大的)扩展。

查看此维基百科页面上的ASCII可打印字符:https://en.wikipedia.org/wiki/ASCII#ASCII_printable_code_chart

如您所见,0的字符(字形)的小数值为48149,...和957

因此,将带有char字符的'0'投射到int将产生值48。然后我们依赖于字符'0''9'是连续的,因此减去48('0'的值)会产生09,这就是我们想要的。

答案 2 :(得分:0)

private static int getYear(char[] charArray){
    return Integer.parseInt(new String(charArray));
}