【问题标题】:I keep getting IndexOutOfBounds error when I try to split a line from a file当我尝试从文件中拆分一行时,我不断收到 IndexOutOfBounds 错误
【发布时间】:2019-04-27 11:38:15
【问题描述】:

首先你好!我正在尝试逐行读取文件并以这样的方式拆分该行,以便我可以将生成的子字符串用作特定函数的参数。我知道当它达到“消耗的最小单位:”时它会失败。我也尝试将部件(下面的第一张图片)修复为空,但它不起作用。我知道这个错误,但我不知道如何解决它。一些帮助会很棒,干杯!

【问题讨论】:

  • 你想在什么地方分割字符串?
  • 请不要张贴文字图片。将文本复制并粘贴到您的问题中。如果您需要帮助格式化,我相信有人会为您清理它。
  • @Joe 我将字符串拆分为 { : } 并在其后留出一个空格,因为'我想为第二部分获取一个干净的字符串.. 类似于 parts[1] = "Lights" 而不是零件[1] =“灯”或“:灯”
  • @IanMacDonald 我不知道。对不起xD
  • 您应该在访问数组元素之前检查数组的长度。除了您的例外,您的行似乎不包含: ,因为您的部件数组的长度小于2,导致您尝试访问parts[1] 时出错您可以在拆分之前打印该行并打印数组长度吗?

标签: java string split indexoutofboundsexception


【解决方案1】:

这样做

String[] split = currentLine.split(":");
for (int i = 0; i < split.length; i++)
    split[i] = split[i].replaceFirst(" ", "").trim();

【讨论】:

    【解决方案2】:

    虽然你应该调试你的代码来找到你的parts数组里面携带的东西,但是为了避免出现IndexOutofBoundException,你应该以一种更安全的方式编写代码,有点像这样,

        System.out.println("currentLine: " + currentLine); // print the contents of currentLine too
        parts = currentLine.split(": ");
        if (parts.length >= 2) {
            System.out.println(parts[0] + " " + parts[1]);
        }
    

    【讨论】:

      猜你喜欢
      • 2016-05-05
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 2018-04-27
      • 2020-07-26
      • 1970-01-01
      • 2021-03-29
      • 2019-07-01
      相关资源
      最近更新 更多