斯卡拉炭为int的转换(Scala char to int conversion)

2019-09-01 05:27发布

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;
};

这是一个函数,它像一个String 12345和应返回的结果1 * 2 * 3 * 4 * 5 。 然而,我又回到没有任何意义。 什么是从隐式转换CharInt实际上返回?

这似乎是增加48到所有的值。 相反,如果我做的product = product * (x.toInt - 48)的结果是正确的。

Answer 1:

这有一定道理:就是那样的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

或者只是使用x.asDigit ,作为@Reimer说

scala> '1'.asDigit
// res5: Int = 1


文章来源: Scala char to int conversion
标签: scala