配列の最も繰り返される値を返す独自の関数を作成する必要があります。配列があり、統計的な方法 (配列で最も繰り返される値であるモード) をカウントする必要がありますが、なぜ機能しないのかわかりません。
2 つの配列を作成します。
最初の配列には値が含まれており、最初の配列の各値が繰り返される回数を挿入する2番目の配列が含まれています。次に、関数によって、findmax
繰り返される値の最大のインデックスを検索し、最後にモードでメッセージを表示します.
public int findmax(Integer [] somearray) {
int max = somearray[0];
int z=0;
for (int i = 0; i < somearray.length; i++) {
if (somearray[i]>max){
max = somearray[i];
z = i;
}
}
return z;
}
private void myModaActionPerformed(java.awt.event.ActionEvent evt) {
Double [] myarray = new Double[dsTable.getRowCount()];
Integer [] myarray2 = new Integer[dsTable.getRowCount()];
for (int i=0; i < myarray.length; i++){
myarray[i] = (Double)dsTable.getModel().getValueAt(i, 0);
}
java.util.Arrays.sort(myarray);
for (int i = 0; i < myarray.length; i++){
JOptionPane.showMessageDialog(this.mainPanel,((Double)myarray[i]));
}
for (int i = 0; i < myarray2.length; i++){
myarray2[i]=0;
}
for (int i = 0; i < myarray.length; i++){
for (int j = 0; j < myarray.length; j++){
if (myarray[i] == myarray[j]){
myarray2[i]++;
}
}
}
JOptionPane.showMessageDialog(this.mainPanel,myarray[findmax(myarray2)]);
}
プログラムの結果は、最初の配列の最初の値です。