【问题标题】:Splitting a string caused ArrayIndexOutOfBoundsException [duplicate]拆分字符串导致 ArrayIndexOutOfBoundsException [重复]
【发布时间】:2015-09-10 10:34:09
【问题描述】:

我正在尝试在 Java 中拆分西班牙语字符串。我得到了以下异常:

ArrayIndexOutOfBoundsException

我要拆分的字符串是:pin pon es un muñeco

调试器显示以下错误:

java.lang.ArrayIndexOutOfBoundsException: length=1;索引=1

拆分语句:

String[] splitVideoTitle = tvTitle.getText().toString().split("\\s+"); 

导致上述索引异常的代码行就在这行代码中:

String firstWords = splitVideoTitle[0] + " " + splitVideoTitle[1];

感谢任何避免此异常的建议。

谢谢

【问题讨论】:

  • 你使用的split语句在哪里?
  • java.lang.ArrayIndexOutOfBoundsException: length=1; index=1 你的字符串根本没有被分割
  • 我已经用分裂声明更新了我的帖子
  • 在测试您的 split 语句时它应该可以工作。这是您尝试拆分的唯一标题,还是循环遍历数组? getText() 返回什么?
  • 实际上,我通过 Web 服务 API 获得了许多字符串。 getText 返回语句:pin pon es un muñeco

标签: java android arrays string


【解决方案1】:

只需添加一个测试:

   String firstWords = "";
if(splitVideoTitle.length>1){
        firstWords = splitVideoTitle[0] + " " + splitVideoTitle[1];
    }
    else firstWords=splitVideoTitle[0];

【讨论】:

    【解决方案2】:

    该错误仅表示数组splitVideoTitle 在索引splitVideoTitle[0] 处只有一个元素。我认为这是因为完整的视频标题不包含拆分字符,或者拆分字符位于标题的开头或结尾。

    试试这个:

    String firstWords;
    if (splitVideoTitle.length >= 2) {
        firstWords = splitVideoTitle[0] + " " + splitVideoTitle[1];
    } else if (splitVideoTitle.length == 1) {
        firstWords = splitVideoTitle[0];
    }
    

    【讨论】:

      【解决方案3】:

      我通过将 Textview 接收到的值分配给另一个变量来尝试您的代码,并且您的代码有效

          String a = "pin pon es un muñeco";
          String[] splitVideoTitle = a.split("\\s+");
          String firstWords = splitVideoTitle[0] + " " + splitVideoTitle[1];
          Log.i("TAG", "first word" + firstWords);
      

      可能是“tvTitle.getText().toString()”,这是造成问题,或返回 null..请使用 LOG 检查 Textview 返回的值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-03
        • 1970-01-01
        • 2017-07-22
        • 1970-01-01
        • 2011-07-06
        • 2011-09-03
        相关资源
        最近更新 更多