0

我正在用系列和输入做一些初学者编程,但我经常遇到同样的问题。找不到解决方案。基本上我现在想让我的程序做什么,我输入了一个数字列表并将它们打印出来。我得到了同样的错误一遍又一遍地我在程序中所做的任何更改。这是我的代码。

import java.util.Scanner;
public class Test437 {  
public static void main(String[] args) {

  int limit = 25;
  int cnt; 
  int addtion; 
  double dbt; //Devided by two % 2

  Scanner input = new Scanner(System.in);     
  int [] ya = new int[8]; 

  for(cnt = 0;cnt < ya.length;cnt++)
  {

      System.out.print("ya[" + cnt + "]= ");
      ya[cnt] = input.nextInt();

  }

      System.out.println(ya[cnt]);


  }
  }

我收到此错误:线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 8 at Test437.main(Test437.java:22)

4

4 回答 4

1

System.out.println(ya[cnt]);这条线在循环之外。Cnt等于数组大小,因此不能以这种方式使用它,因为数组中没有具有这种索引的元素。

于 2012-11-10T13:55:24.813 回答
0

cnt 退出循环的条件是超过长度,因此您进入 indexoutofbounds

于 2012-11-10T13:56:39.077 回答
0

这条线

        System.out.println(ya[cnt]);

正在尝试访问不存在的 ya.Length 索引处的元素。

在您的示例中, ya[8] 包含位置从 0 到 7 的元素(ya[0] ya[1] ... ya[7] 并且您正在尝试访问 ya[8] bacuase cnt 变量在 for 之后为 8声明结束。

因此编译器会抛出 indexOutOfBounds 异常。

于 2012-11-10T13:58:06.907 回答
0

该行:

System.out.println(ya[cnt]);

接受后需要再次循环打印出所有数组值:

for (cnt = 0;cnt < ya.length;cnt++) {
   System.out.println(ya[cnt]);
}

或者,您可以这样做:

System.out.println(Arrays.toString(ya));
于 2012-11-10T13:59:40.373 回答