【问题标题】:how to resolve the String Index Out Of Bounds Exception如何解决字符串索引越界异常
【发布时间】:2017-04-06 21:46:14
【问题描述】:
for (int i = 0; i < data.length; i++) {
    if (data[i].toString() != null) {
        char a = data[i].toString().charAt(0);

        if (a == a1) {
            if (distance(data[i], keyword) < 5) {
                Log.d("sjdhkshdjjjjjjjjjjjjjj", data[i]);
                dist.add(distance(data[i], keyword));
                sound.add(data[i]);
            }
        }
    }
}

它在从 data[].tostring() 访问第一个字符的行上给出异常。

【问题讨论】:

  • 与其试图描述这行代码的样子,不如告诉我们确切的代码行。是char a2=data[5].charAt(0);吗?是char a1=input.charAt(0);吗?此外,在寻求免费帮助时,至少要花时间正确缩进您的代码。
  • 了解data 的样子会很有帮助。
  • 解决它的方法是停止离开字符串(或数组或列表或集合)的末端。如果您学会使用调试器,则可以单步调试代码并找出您做错的地方,这比发布问题让其他人为您解决问题要快。
  • data[i].toString() 为空。阅读异常信息:它会告诉你字符串长度为零。
  • @MianHassan 不,您检查了字符串引用是否为null。 Null 和empty 不是一回事:"" != null 为假,但"".isEmpty()(或"".length() == 0)为真

标签: java string char


【解决方案1】:

data[i] 可能是一个空的(但已初始化)字符串,并且您正试图推断它的第一个字符,因此异常是上升。

正确的检查仍然会检查数据不为空,而且至少包含一个字符;

if (data[i].toString() != null &amp;&amp; !data[i].toString().isEmpty())

我也会避免所有对toString() 的调用,只需调用一次,然后将结果保存在一个临时字符串变量中;您只是在消除不必要的循环,并且在多任务系统中,每次调用的结果可能不同,从而使所有代码变得疯狂。基本上,学习总是这样做只是一个好习惯。

【讨论】:

    【解决方案2】:

    这些更改可以让您避免一些例外情况

    for (int i = 0; i < data.length; i++) {
            if(data[i]==null) continue ; //Add this
            if (data[i].toString() != null &&  data[i].toString().length>0) {//Another change
                char a = data[i].toString().charAt(0);
    
                if (a == a1) {
                    if (distance(data[i], keyword) < 5) {
                        Log.d("sjdhkshdjjjjjjjjjjjjjj", data[i]);
                        dist.add(distance(data[i], keyword));
                        sound.add(data[i]);
                    }
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2022-12-17
      • 2019-08-01
      • 2013-12-08
      • 2014-10-16
      • 2017-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多