Чтение значений с плавающей точкой из файла CSV в Scala? - PullRequest
0 голосов
/ 02 марта 2020

Я хочу отправить (целочисленные) значения из файла CSV в класс (долото) здесь.

Я просто не могу прочитать значения из файла CSV - я уже попробовал все фрагменты кода, разбросанные по всему rnet. (CSV-файл имеет следующий формат ->)

1321437196.0,
-2132416838.0,
1345437196.0

Код, который я использую:

val bufferedSource = io.Source.fromFile("sourceFile.csv")
val rows = Array.ofDim[Int](3)
var count = 0
  for (line <- bufferedSource.getLines) {

    rows(count) = line.split(",").map(_.trim).toString.toInt

    count += 1
  }
  bufferedSource.close
println(rows.mkString(" "))

Вывод:

[Ljava.lang.String;@51f9ef45
[Ljava.lang.String;@2f42c90a
[Ljava.lang.String;@6d9bd75d

Я понял ошибку сообщение и пробовал все различные фрагменты, упомянутые здесь ( Печать массива в Scala, Scala - печать массивов ), но я просто не вижу, где я здесь не так. Просто чтобы указать, я не хочу здесь значение Double, но хочу преобразованное Signed Integer , поэтому и нужно toInt.

Спасибо, будем благодарны за помощь в этом!

Ответы [ 3 ]

3 голосов
/ 02 марта 2020

"1.0".toInt не будет работать. Нужно go от String до Float до Int.

val bufferedSource = io.Source.fromFile("sourceFile.csv")
val rows = bufferedSource.getLines
                         .map(_.split(",").head.trim.toFloat.toInt)
                         .toArray
bufferedSource.close
rows  //res1: Array[Int] = Array(1321437184, -2132416896, 1345437184)
1 голос
/ 02 марта 2020

Изменить

line.split(",").map(_.trim).toString.toInt

на

line.split(",")(0).trim.toInt
0 голосов
/ 02 марта 2020
val bufferedSource = io.Source.fromFile("sourceFile.csv")
val rows = bufferedSource.getLines
                     .map(_.split(",").headOption.mkString.toInt)
bufferedSource.close
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...