Próbuję przeanalizować 100 50-cyfrowych liczb z ciągu znaków pod poniższym kodem:
val input = """37107287533902102798797998220837590246510135740250
|46376937677490009712648124896970078050417018260538
|74324986199524741059474233309513058123726617309629""".stripMargin
val list = input.split("""n""").map(BigInt(_))
ale kończę na "java.lang.NumberFormatException.forInputString (NumberFormatException.java:65) ". Nie mam pojęcia, dlaczego to nie działa, ponieważ kiedy łańcuch jest podzielony, każdy element listy ma typ String. Każda pomoc byłaby bardzo cenna.
Z poważaniem
Odpowiedzi:
1 dla odpowiedzi № 1Prawdopodobnie jesteś w systemie Windows, gdzie EOL jest rn.
Też musisz to rozebrać.
Tutaj ponownie uruchomiłem system Windows, aby przeprowadzić demo ...
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)
Zauważ, że w cygwin muszę :se fileformat=dos
w vi, aby użyć końców linii rn.
Oto przykład, w którym niedostrzeżona niedopasowanie impedancji między źródłowym EOL a EOL środowiska wykonawczego podsłuchiwało mnie:
Chcesz użyć s.lines.mkString
aby go rozebrać.