Scala char到int转换
发布时间:2020-12-16 09:31:04 所属栏目:安全 来源:网络整理
导读:def multiplyStringNumericChars(list: String): Int = { var product = 1; println(s"The actual thing + $list") list.foreach(x = { println(x.toInt); product = product * x.toInt; }); product;}; 这是一个像12345这样的字符串的函数,应该返回1 * 2 *
def multiplyStringNumericChars(list: String): Int = { var product = 1; println(s"The actual thing + $list") list.foreach(x => { println(x.toInt); product = product * x.toInt; }); product; }; 这是一个像12345这样的字符串的函数,应该返回1 * 2 * 3 * 4 * 5的结果。但是,我回头没有任何意义。从Char到Int实际返回的隐式转换是什么? 它似乎在所有值中添加了48。如果相反,我做product = product *(x.toInt-48),结果是正确的。 解决方法
这样做是有道理的:那就是
how characters encoded in ASCII table:0的char映射到十进制48,1映射到49等等。所以基本上当你将char转换成int时,你需要做的只是减去’0’:
scala> '1'.toInt // res1: Int = 49 scala> '0'.toInt // res2: Int = 48 scala> '1'.toInt - 48 // res3: Int = 1 scala> '1' - '0' // res4: Int = 1 或者只是使用x.asDigit,如@Reimer所说 scala> '1'.asDigit // res5: Int = 1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |