Kotlin: инициализировать 2D массив - PullRequest
0 голосов
/ 29 апреля 2020

Я в al oop, читаю 2 столбца из файла. Я читаю R, T комбинации, 50 раз. Я хочу, чтобы R и T были в массиве, чтобы я мог найти N-ую пару R, T позже в функции. Как мне поместить пары R, T в массив и найти, скажем, 25-ю запись позже в функции?

Например:

for (nsection in 1 until NS+1) {
  val list: List<String> = lines[nsection + 1].trim().split("\\s+".toRegex())
  val radius = list[0].toFloat()
  println("Radius = $radius")
  val twist = list[8].toFloat()
  println("twist = $twist")
  }

Хотел бы вытащить радиус и твист пар из таблицы в функции позже. До сих пор NS достигает 50.

1 Ответ

1 голос
/ 29 апреля 2020

Вы можете использовать map() на вашем итераторе диапазона для создания списка того, что вы хотите.

val radiusTwistPairs: List<Pair<Float, Float>> = (1..NS).map { nsection ->
    val list = lines[nsection + 1].trim().split("\\s+".toRegex())
    val radius = list[0].toFloat()
    println("Radius = $radius")
    val twist = list[8].toFloat()
    println("twist = $twist")
    radius to twist
}

Или использовать конструктор Array:

val radiusTwistPairs: Array<Pair<Float, Float>> = Array(NS) { i ->
    val list = lines[i + 2].trim().split("\\s+".toRegex())
    val radius = list[0].toFloat()
    println("Radius = $radius")
    val twist = list[8].toFloat()
    println("twist = $twist")
    radius to twist
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...