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 に答える