【问题标题】:Convert from Int to char -> string -> double -> int从 Int 转换为 char -> string -> double -> int
【发布时间】:2020-04-05 09:25:51
【问题描述】:

我是 scala 的新手,我目前正在使用“Learning Scala”一书进行自学,我遇到了一个关于

的问题

" 将数字 128 转换为 char 、 string 、 double ,然后再转换回 int 。您希望保留原始金额吗?你需要任何特殊的转换功能吗? "

我一开始是怎么做的,

val number:Int = 128 
val convertNumberToChar = number.toChar
//Whenever I cast it to char , I will receive '?'

我进行了在线研究,但我对 scala 仍然不熟悉,为什么我会收到“?”

我还提供了另一种保留值的解决方案,方法是将数字转换为列表,然后转换为字符串。但我不确定我是否做得对。请告诉我你的意见。

val number:Int = 128
val convertToChar = number.toList //This will convert a list of char
val convertToString = convertToChar.mkString //This will convert from list to string 
val convertToDouble = convertToString.toDouble //This will convert to Double
val convertToInt = convertToDouble .toInt // This will convert back to int

非常感谢您。 :)

【问题讨论】:

  • “?”是角色如何显示。它是"Padding Character" U+0080。尝试使用类似 65(又名 'A')的值:unicodelookup.com char 也是一个整数类型;但是,它通常显示在“字符上下文”中,并且对于恰好是“?”的特定 U+0080 字符(在当前环境中)。

标签: scala


【解决方案1】:

128 不是可打印字符的值。您收到 ? 是因为显示器想向您显示那里有一个 Char 值,但它无法向您显示该值所代表的字符。

由于它是一个字符(即使它是不可显示的),它可以变成长度为 1 的 String。但是 String 不能变成数字,因为只有数字表示形式(如 "3.56""-79") 可以转换为数字。

scala> 128.toChar.toString.toDouble.toInt
java.lang.NumberFormatException: For input string: ""
  at java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2054)
  at java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
  at java.base/java.lang.Double.parseDouble(Double.java:543)
  at scala.collection.immutable.StringLike.toDouble(StringLike.scala:317)
  at scala.collection.immutable.StringLike.toDouble$(StringLike.scala:317)
  at scala.collection.immutable.StringOps.toDouble(StringOps.scala:29)
  ... 28 elided

scala> 55.toChar.toString.toDouble.toInt
res33: Int = 7

为了恢复原始值,必须将其转换为具有不同 toString 方法的类型。

scala> 128.toChar.toShort.toString.toDouble.toInt
res34: Int = 128

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多