Scala 将多行字符串转换为 BigInt

4
我试图使用以下代码从字符串中解析100个50位数字:
```python 我正在尝试使用下面的代码从字符串中解析100个50位数字: ```
val input = """37107287533902102798797998220837590246510135740250
          |46376937677490009712648124896970078050417018260538
          |74324986199524741059474233309513058123726617309629""".stripMargin
val list = input.split("""\n""").map(BigInt(_))

但是最后出现了"java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)"的错误。我不知道为什么会出现这个问题,因为当字符串被拆分时,列表中的每个元素都是字符串类型。如果有任何帮助,将不胜感激。

此致


3
我尝试了你的代码,没有出现任何错误(scala 2.10.0)。你确定提供的是正确的代码片段吗? - om-nom-nom
3
这是在线结果页面(点击右上角绿色按钮)。 - om-nom-nom
你可能想要修剪字符串,因为尾随空格会破坏 BigInt。 - Noah
你能把整个堆栈跟踪放到你的帖子里吗?异常消息指示了导致失败的字符串,但我在你发布的内容中没有看到它。这可能是看到为什么你会得到这个异常而我们其他人没有的线索。 - cmbaxter
你是怎么发音skaLAkata的?无论如何,访问http://www.scalakata.com/51ba2dd0e4b0ea2d637b8fa3 来想象一个不同的EOL。感谢提供链接。 - som-snytt
1个回答

1

可能你正在使用Windows系统,换行符是\r\n。

你还需要将其去除。

这里我重启进入Windows演示...

apm@halyard ~/tmp
$ vi bigbomb.scala

apm@halyard ~/tmp
$ skalac bigbomb.scala ; skala bigbomb.Test
"ava.lang.NumberFormatException: For input string: "35740250
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

注意,在cygwin中,我必须在vi中使用:se fileformat=dos才能使用\r\n换行符。
下面是一个例子,源文件的EOL和运行时的EOL之间未被确认的阻抗不匹配让我感到困扰: 一些愚蠢的代码 你想使用s.lines.mkString来去除它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接