我有以下代码
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。
有什么建议吗?
答案 0 :(得分:2)
>>> np.insert(a,[0,a.size],[88,77])
array([ 88, 2, 56, 4, 8, 564, 77])
答案 1 :(得分:2)
假设练习的目的不是使用String
和parseInt
,您需要将字符'0'
转换为'9'
到数字0
到9
。这是通过减去字符'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
的字符(字形)的小数值为48
,1
为49
,...和9
是57
。
因此,将带有char
字符的'0'
投射到int
将产生值48
。然后我们依赖于字符'0'
到'9'
是连续的,因此减去48('0'
的值)会产生0
到9
,这就是我们想要的。
答案 2 :(得分:0)
private static int getYear(char[] charArray){
return Integer.parseInt(new String(charArray));
}