Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala字符到整数的转换_Scala - Fatal编程技术网

Scala字符到整数的转换

Scala字符到整数的转换,scala,Scala,这是一个函数,它采用类似于12345的字符串,并应返回1*2*3*4*5的结果。然而,我回来没有任何意义。从Char到Int的隐式转换实际返回的是什么 它似乎在向所有值添加48。如果我改为product=product*(x.toInt-48)结果是正确的。它确实有意义:就是这样:0个字符映射到小数点48,1映射到49,依此类推。所以基本上当你把char转换成int时,你需要做的就是减去'0': def multiplyStringNumericChars(list: String): Int

这是一个函数,它采用类似于
12345
的字符串,并应返回
1*2*3*4*5
的结果。然而,我回来没有任何意义。从
Char
Int
的隐式转换实际返回的是什么


它似乎在向所有值添加
48
。如果我改为
product=product*(x.toInt-48)
结果是正确的。

它确实有意义:就是这样:0个字符映射到小数点48,1映射到49,依此类推。所以基本上当你把char转换成int时,你需要做的就是减去'0':

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;
};
或者像@Reimer所说的那样,只需使用
x.asDigit

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

对于字符,toInt返回相应的字符代码。使用x.asDigit获取与数字对应的整数(如果包含字母,则此选项适用于以36为底的整数)。
scala> '1'.asDigit
// res5: Int = 1