Java.lang.ArrayIndexOutOfBoundsException-但是程序仍然正确执行吗?

Java.lang.ArrayIndexOutOfBoundsException-但是程序仍然正确执行吗?,java,arrays,Java,Arrays,我正在尝试创建一个程序,根据 关于直方图应为多少行的用户输入,以及 实际数字(也是用户输入) 该程序运行良好,但我得到以下信息: 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:5 位于test.test.main(test.java:32) /Users/[myname]/Library/Caches/NetBeans/8.2/executor snippets/run.xml:53: Java返回:1次生成失败(总时间:7秒) 当

我正在尝试创建一个程序,根据

  • 关于直方图应为多少行的用户输入,以及
  • 实际数字(也是用户输入)
该程序运行良好,但我得到以下信息:

线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:5 位于test.test.main(test.java:32) /Users/[myname]/Library/Caches/NetBeans/8.2/executor snippets/run.xml:53: Java返回:1次生成失败(总时间:7秒)

当程序完成时。有什么问题

 public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        String star = "*";
        int index = 1;

        System.out.println("How many lines?");
        int num = input.nextInt();

        System.out.println("Your histogram will be "+ num +" lines");
        int[] histogram = new int[num];

        for (int i = 0; i < histogram.length; i++) {

            System.out.println("Please write number " + index++);

            histogram[i] = input.nextInt();

        }

        System.out.println("Here is your histogram: ");           

        for (int i = 0; 1 < histogram.length; i++) {
            for (int j = 0; j < histogram[i]; j++)

            System.out.print(star);
            System.out.println();

        }

    System.exit(0);

    }
}
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(System.in);
字符串星=“*”;
int指数=1;
System.out.println(“多少行?”);
int num=input.nextInt();
System.out.println(“您的直方图将是“+num+”行”);
int[]直方图=新的int[num];
对于(int i=0;i
更换:

for (int i = 0; 1 < histogram.length; i++) {
for(int i=0;1
作者:

for(int i=0;i
否则,它将执行正确的次数(因为
i
仍在递增,而内部循环一直循环到
i
),并在到达“OutofBounds”时崩溃,但由于循环在程序末尾,它看起来执行正确。

替换:

for (int i = 0; 1 < histogram.length; i++) {
for(int i=0;1
作者:

for(int i=0;i

否则,它将执行正确的次数(因为
i
仍然递增,并且内部循环一直循环到
i
),并在到达“边界外”时崩溃,但由于循环位于程序的末尾,因此它看起来执行正确。

发生错误的原因是您编写了
1
,而实际上是指
i

如果你不知道我指的是哪里,这里是:

    System.out.println("Here is your histogram: ");           

    for (int i = 0; 1 < histogram.length; i++) { // <-- this line right here
        for (int j = 0; j < histogram[i]; j++)

        System.out.print(star);
        System.out.println();

    }
System.out.println(“这是您的直方图:”);

对于(inti=0;1i
时编写了
1

如果你不知道我指的是哪里,这里是:

    System.out.println("Here is your histogram: ");           

    for (int i = 0; 1 < histogram.length; i++) { // <-- this line right here
        for (int j = 0; j < histogram[i]; j++)

        System.out.print(star);
        System.out.println();

    }
System.out.println(“这是您的直方图:”);
对于(inti=0;1对于(inti=0;i