【问题标题】:Getting an index out of bounds error and I don't know why. I'm stuck获取索引越界错误,我不知道为什么。我被困住了
【发布时间】:2016-05-17 06:43:22
【问题描述】:

我在 Scala 中遇到索引越界异常,我不知道为什么。

val rawData = "4x23x21\n22x29x19\n11x4x11\n8x10x5"
val data = rawData.split('\n')
data.map(x => x.split('x')(1))

由于某种原因,当我引用拆分 x 时创建的数组时,我得到了一个数组越界异常。它应该是一个包含三个索引的数组,但是当我尝试引用第二个索引时出现异常。当我引用第一个时,它工作得很好。

我们将不胜感激。

【问题讨论】:

  • 正如 dth 所指出的,您的代码适用于我的 (1),它是第二个元素。对于第三个,它也适用于 (2)。所以你能发布你的代码得到异常,因为它不是你问题中的代码。
  • 看来,如果我缩短输入数据就可以了。原始输入数据要长得多,当我使用它时它会抛出它吗?也许错误在数据中
  • 你能给我们完整的数据吗?
  • 你不能链接到这个页面...你必须把它放在别的地方

标签: arrays scala dictionary iteration


【解决方案1】:

您的代码运行良好:

scala> val rawData = "4x23x21\n22x29x19\n11x4x11\n8x10x5"
rawData: String =
4x23x21
22x29x19
11x4x11
8x10x5

scala> val data = rawData.split('\n')
data: Array[String] = Array(4x23x21, 22x29x19, 11x4x11, 8x10x5)

scala> data.map(x => x.split('x')(1))
res0: Array[String] = Array(23, 29, 4, 10)

【讨论】:

  • 是的,而且? OP 的数组有三个条目,所以即使是错误的 (2) 也应该(并且确实)起作用。所以问题一定是别的。
  • 是的,我看错了,以为他想访问第三个,而代码实际上是他访问第一个的示例。代码运行得很好。因此,他的输入或他没有向我们展示的指标一定是做错了什么。一旦我们收到他的回复,我将编辑或删除我的答案
  • 你做错了什么。只需启动 REPL(在命令行上键入 scala)并粘贴您的代码。你会看到它执行得很好。
  • 我开始认为我的数据可能有问题。当我插入它时,它给了我例外。当使用较少的数据时(如我的示例),它可以工作。这是数据 - adventofcode.com/day/2/input
【解决方案2】:

看来问题出在我的数据中!非常感谢您的帮助!

【讨论】:

    猜你喜欢
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多