Array中的Java OutofBoundException

时间:2016-12-29 08:46:47

标签: java

我收到了这个错误。虽然它可能非常基础。 我已经声明了长度为3的数组。为什么它仍然显示OutofBoundException错误?

    public static void main(String[] args) {
            int i;
            String[] arr = new String[3];
            Scanner input = new Scanner(System.in);
            System.out.println("Please enter the name");
            for (i = 0; i < 3; i++) {
                arr[i] = input.nextLine();
            }
            System.out.println(arr[i]);
        }
   Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
        at arraysPractice.Arr2.main(Arr2.java:21)

3 个答案:

答案 0 :(得分:3)

这是因为在完成for循环后,您的val jdbcDF = sqlContext.read .format("jdbc") .option("driver" , "com.mysql.jdbc.Driver") .option("url", "jdbc:mysql://<<>Servername>:3306/<<DatabaseName>>") .option("dbtable", "(SELECT id, name FROM partner) tmp") .option("user", "username") .option("password", "******") .load() 将为3.哪个是outOfBound,因为您的数组大小仅为i

所以打印

3

如果你想打印最后一个元素。

注意

要避免此类错误,请尝试使用System.out.println(arr[i-1]); 打印最后一个元素。

答案 1 :(得分:0)

循环终止时i的值为3。然后,您尝试打印arr[i],这将无效,因为它只有索引012

我猜你的意思是将System.out.println语句置于循环中而不是之后?

答案 2 :(得分:0)

第一次迭代)。 I = 0和0 <3因此它进入for循环,然后I ++,所以我= 1 第二次迭代).I = 1和1 <3因此它进入for循环,之后我是++,所以我= 2。
第三次迭代)I = 2和2 <3因此它进入for循环,然后I ++,所以我= 3 第四次迭代)I = 3和3 <3(假)它将退出循环,之后你正在尝试打印。 System.out.println(arr [i]);其中I = 3。并且你的数组大小= 3(意味着最大位置可以是2,其余位置是(0,1,2))所以它是索引越界,因为你想检查索引为3的数组,但是数组最大索引是2。

所以QUICK修复了把System.out.println(arr [i]);在for循环中。