Java 熟悉Netbeans的人:为什么会发生这种情况?错误不是';这真的不是一个错误吗?

Java 熟悉Netbeans的人:为什么会发生这种情况?错误不是';这真的不是一个错误吗?,java,netbeans,ide,Java,Netbeans,Ide,写这样简单的东西时: import java.util.Scanner; public class Practice { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Please enter array size: "); int x = sc.nextInt(); i

写这样简单的东西时:

import java.util.Scanner;
public class Practice {  
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); 
        System.out.println("Please enter array size: ");
        int x = sc.nextInt();
        int [] anArray;
        int index = 100;
        anArray = new int[x];
        for (int i=0; i<=x; i++){
            anArray[i] = index;
            index += 100;
            System.out.println ("Element at index "+ i + ": " + anArray[i]);
        }

    }

}
这对我来说似乎不太对劲。。为什么在代码运行到一半时抛出异常?然后在最后完成

它指向第21行: anArray[i]=索引

老实说,这不是什么大问题。。我只是随便玩玩,回顾一下Java的一些基础知识(已经有一段时间了…),例外是让我觉得自己做错了什么,但我不确定自己是否真的做错了,因为它似乎是按照我的意图工作的


谢谢大家!

更改for语句:

for (int i=0; i<x; i++){ // Change <= to <
        anArray[i] = index;
        index += 100;
        System.out.println ("Element at index "+ i + ": " + anArray[i]);
    }

但是您访问它的时间是
anArray[12]
,因此它会抛出错误。

问题更多地涉及线程的同步,而不是代码。Netbeans可能正在使用两个不同的线程监视stderr和stdin,然后尝试将输出同步到单个线程(EDT),但由于每一行(可能)分别同步,因此它们重叠。是的,很烦人。有人可能会说,有两个单独的窗口会更有帮助,有时会,有时不会感谢你!现在你指出了这一点,这是完全有道理的!知道为什么它会在输出中的两行上抛出异常吗?说实话,我不知道。但是
ArrayIndexOutOfBoundsException
错误很容易检测,因为跟踪错误会告诉您尝试访问的
bad
索引,在您的情况下
12
java.lang.ArrayIndexOutOfBoundsException:12
for (int i=0; i<x; i++){ // Change <= to <
        anArray[i] = index;
        index += 100;
        System.out.println ("Element at index "+ i + ": " + anArray[i]);
    }
anArray[0]
anArray[1]
...
anArray[11]