これは私が解決しようとしている質問です:
mainメソッドとhistogramと呼ばれる静的メソッドを含むというクラスを記述します。このクラスArrayHistogram
には次のシグネチャがあります。main
public static int[] histogram(int[][] arrayA)
メソッドで、2次元配列を宣言して初期化し、それを呼び出しますarrayA
。この配列には、負でない整数が含まれている必要があります。ヒストグラムメソッドはarrayA
、の要素の出現頻度を受け入れarrayA
て1次元配列(histA
)に入れ、を返しますhistA
。出現頻度とは、要素が配列内で出現する回数を意味します。プログラムは、不規則な配列でも機能するはずです。プログラムはhistA
、変数を宣言する前に、自動的にサイズを決定する必要がありますhistA
。
ヒント:図1は、サンプルの2D array(arrayA
)と対応する。を示していますhistA
。histA[0] = 2
は、0がAで2回発生したことを示します。または、、はhistA[3] = 1
、番号3がAで1回出現したことを示します。
私はこれまでにこれを行いました
public class ArrayHistogram
{
public static void main (String[]args)
{
// declearing and initializing a 2D array.
int [][] arrayA = {{5,8,8,4,3},{1,4,2,2,3},{7,4,6,6,9}};
histogram(arrayA);
}
public static int[] histogram (int [][] arrayA)
{ // nested for loop to go through the array.
int max = 0;
for ( int row = 0; row<arrayA.length; row++){
for ( int col=0; col < arrayA[row].length; col++){
if ( arrayA[row][col]> max ){
max = arrayA[row][col];
}
}
}
int histA[] = new int [max];
for ( int row = 0; row<arrayA.length; row++){
for ( int col=0; col < arrayA[row].length; col++){
histA[arrayA[row][col]]++;
}
}
System.out.println(histA);
return histA;
}
}
この行:
histA[arrayA[row][col]]++;
を示していますjava.lang.ArrayIndexOutOfBoundsException
まず、私はこれを正しく行っていますか?
そうでない場合、どうすればそれを実現できますか?