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;
};
Run Code Online (Sandbox Code Playgroud)
这是一个类似String的函数,12345应该返回结果1 * 2 * 3 * 4 * 5.但是,我回来后没有任何意义.什么是从隐式转换Char到Int实际的返回?
它似乎增加48了所有的价值观.如果相反,我做product = product * (x.toInt - 48)的结果是正确的.
om-*_*nom 65
它确实有意义:这就是在ASCII表中编码字符的方式:0个字符映射到十进制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
Run Code Online (Sandbox Code Playgroud)
或者只是使用x.asDigit,正如@Reimer所说
scala> '1'.asDigit
// res5: Int = 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25662 次 |
| 最近记录: |