-1

このコードは機能しますが、配列の範囲外の例外が引き続き発生します。配列のサイズを 6 に変更し、最後に 2 つの空のスロットを残しても、例外がスローされます。誰かが問題を特定できますか?

  int [] arrayCMYK = new int [4];
  getCMYK(arrayCMYK);

static int getCMYK (int arrayCMYK[])
   {
   Scanner input = new Scanner(System.in);
   //C
   System.out.println("\n\nPlease Enter the 'C' value of the CMYK number.");
   System.out.println("Press Enter after the number has been entered.");
   arrayCMYK[0] = input.nextInt();

   while(arrayCMYK [0] > 100 || arrayCMYK [0] < 0 )
   {
   System.out.println("\n\nError\nPlease Enter the 'C' value of the CMYK number.");
   System.out.println("Press Enter after the number has been entered.");
   arrayCMYK[0] = input.nextInt();
   }
   //M
   System.out.println("\n\nPlease Enter the 'M' value of the CMYK number.");
   System.out.println("Press Enter after the number has been entered.");
   arrayCMYK[1] = input.nextInt();

   while(arrayCMYK [1] > 100 || arrayCMYK [1] < 0 )
   {
   System.out.println("\n\nError\nPlease Enter the 'M' value of the CMYK number.");
   System.out.println("Press Enter after the number has been entered.");
   arrayCMYK[1] = input.nextInt();
   }
   //Y
   System.out.println("\n\nPlease Enter the 'Y' value of the CMYK number.");
   System.out.println("Press Enter after the number has been entered.");
   arrayCMYK[2] = input.nextInt();

   while(arrayCMYK [2] > 100 || arrayCMYK [2] < 0 )
   {
   System.out.println("\n\nError\nPlease Enter the 'Y' value of the CMYK number.");
   System.out.println("Press Enter after the number has been entered.");
   arrayCMYK[2] = input.nextInt();
   }
   // K
   System.out.println("\n\nPlease Enter the 'K' value of the CMYK number.");
   System.out.println("Press Enter after the number has been entered.");
   arrayCMYK[3] = input.nextInt();

   while(arrayCMYK [3] > 100 || arrayCMYK [3] < 0 )
   {
   System.out.println("\n\nError\nPlease Enter the 'K' value of the CMYK number.");
   System.out.println("Press Enter after the number has been entered.");
   arrayCMYK[3] = input.nextInt();
   }
   return arrayCMYK[4];
4

4 に答える 4

2

配列には 0 から n-1 までのインデックスが付けられるため、サイズ 4 の配列を定義すると、インデックス 0、1、2、および 3 になりますreturn arrayCMYK[4];

于 2013-01-15T19:24:47.347 に答える
1

配列のインデックスはゼロ ベースなので、

int [] arrayCMYK = new int [4];

インデックスは 0 ~ 3 です

arrayCMYK[4]ArrayOutOfBoundsException が返されます

于 2013-01-15T19:25:46.937 に答える
0
return arrayCMYK[4];

4 つの要素を持つ配列を宣言しました。Java の配列のインデックスはゼロです。

したがって、0-3 のみを参照できます

于 2013-01-15T19:27:21.777 に答える
0

この 4 のインデックスは範囲外です。

return arrayCMYK[4];

arrayCMYK には 4 つの整数の配列があると定義しました。したがって、有効なインデックスは 0、1、2、および 3 です。位置 4 にアクセスすると、範囲外の配列の例外が発生します。

于 2013-01-15T19:25:37.807 に答える