【问题标题】:How can i avoid ArrayIndexOutOfBoundsException in this case? [duplicate]在这种情况下如何避免 ArrayIndexOutOfBoundsException ? [复制]
【发布时间】:2013-07-17 08:58:19
【问题描述】:

这种情况下是否可以避免ArrayIndexOutOfBoundsException??

package com;

public class Hi {

    public static void main(String args[]) {

        String[] myFirstStringArray = new String[] { "String 1", "String 2",
                "String 3" };

        if (myFirstStringArray[3] != null) {
            System.out.println("Present");
        } else {
            System.out.println("Not Present");
        }

    }

}

【问题讨论】:

  • 总是可以避免ArrayIndexOutOfBoundsException,在访问数组元素之前检查array.length
  • 你想达到什么目的?
  • 您的数组将总是长度为 3,因此索引 3 总是无效。目前尚不清楚您真正要问的是什么,但是当您继续使用长度为 3 的数组并要求索引 3 时,答案是否定的:您无法避免异常。
  • 你是非java后台开发者吗?最好使用异常处理...

标签: java


【解决方案1】:

也许我不明白真正的问题,但是在这种情况下,是什么阻止您在访问数组之前检查索引是否在数组内?

if (myIndex < myFirstStringArray.length) {
    System.out.println("Present");
} else {
    System.out.println("Not Present");
}

【讨论】:

    【解决方案2】:

    在数组中,它们的测量方式与数字不同。数组中的第一个对象被认为是 0。因此,在您的 if 语句中,您只需输入 2 而不是 3。

    if (myFirstStringArray[3] != null) {
            System.out.println("Present");
    

     if (myFirstStringArray[2] != null) {
            System.out.println("Present");
    

    希望这会有所帮助! :)

    【讨论】:

      【解决方案3】:

      您的 String 数组包含 3 个元素,并且您正在访问数组 [3],即第 4 个元素作为基于 0 的索引,因此您会收到此错误(无论如何都是异常)。

      为避免ArrayIndexOutOfBoundsException 使用指定索引范围内的索引。并始终检查您的索引是否为&gt;=array.length

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-10
        • 2015-04-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-21
        相关资源
        最近更新 更多