在Java上寻找统计时尚。帮助我查找代码中的错误

在Java上寻找统计时尚。帮助我查找代码中的错误,java,statistics,Java,Statistics,我需要编写自己的函数来返回数组中重复次数最多的值。 我有一个数组,我需要计算统计方式(模式,这是数组中重复次数最多的值),我不知道为什么它不起作用 我创建了两个阵列: 第一个数组包含值,第二个数组我想插入第一个数组中每个值重复的次数,然后通过我的函数,findmax,搜索重复值的最大索引,最后显示一条带有模式的消息 public int findmax(Integer [] somearray) { int max = somearray[0]; int z=0; f

我需要编写自己的函数来返回数组中重复次数最多的值。 我有一个数组,我需要计算统计方式(模式,这是数组中重复次数最多的值),我不知道为什么它不起作用

我创建了两个阵列:

第一个数组包含值,第二个数组我想插入第一个数组中每个值重复的次数,然后通过我的函数,
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)]);              
}
public int findmax(Integer[]somearray){
int max=somearray[0];
int z=0;
for(int i=0;imax){
max=somearray[i];
z=i;
}
}        
返回z;
}
私有void myModaActionPerformed(java.awt.event.ActionEvent evt){
Double[]myarray=新的Double[dsTable.getRowCount()];
整数[]myarray2=新整数[dTable.getRowCount()];
for(int i=0;i

程序的结果是第一个数组的第一个值。

是作业吗?因为你的车轮改造得很糟糕。你为什么不试试呢?它们有许多统计类,可以为您做大多数事情,它们非常简单:

DescriptiveStatistics statistics = new DescriptiveStatistics(someArray.lentgh);

for( Integer value : someArray){
  statistics.addValue( value.doubleValue() );
}

// magick here
statistics.getMax();

看起来像是你的家庭作业,所以我会给你一些建议来帮助你

  • 考虑使用一种新的方法。这里的键是第一个数组中的数字,值是遇到的每个值的计数。所以,当你第一次遇到一个数字时,把它添加到地图上,然后在以后的每一次,你只需要增加这个值

  • 一旦你有了这个映射,找出具有最大值的键就很简单了。还请注意,可能有多个键可以具有该最大值,因此您可能还需要处理该情况


还有一个提示:增加第二个数组的方式似乎不正确。你可能也想重新审视一下你的逻辑

什么不起作用?你有例外吗?输出不良?没有输出?编译失败吗?我不确定您是否希望将其放入传入数组中,并在
映射中记录值,其中键是数组中的值,值是它出现的次数。然后,您可以找到该模式的关系(例如,
[1,3,2,1,5,3]
1
3
的关系)。@Augusto:不要认为它是用于codereview的。OP希望帮助我找出代码中的错误…但正如Ishtar正确指出的那样…很难理解什么不起作用!它不会返回结果。它返回第一个值。我的数组:65,67,69,70,71,72,72,73,75,77,79,80我需要第一个数组中重复次数最多的值!