java - 如何编写代码来查找数组中整数的众数,而不使用个人创建的方法,即常规的 "raw code"

标签 java arrays mean median mode

我正在编写一个代码来查找随机生成的整数数组的平均值、中位数和众数(用户输入数组的大小以及要生成随机数的范围,它会生成 3-22 之间的数字)随机。我在编写平均值或中位数的代码时没有遇到太多麻烦,但我似乎无法编写代码来计算众数(最常出现的数字)。任何人都可以帮助或显示/放置如何计算众数的代码吗?随机生成的整数数组的模式,而不必在代码中为自己创建方法?谢谢。这是我到目前为止所拥有的(查找平均值和中位数的代码):

    public class ArraysIntsMeanMedianAndMode {
public static void main(String[] args) {
    int ArraySize;
    int min;
    int max;
    double x;
    // To get the Size and range of numbers for the randomly genereated ints in the array.
    Scanner sc = new Scanner(System.in);
    System.out.println("What size should the array be?");
    ArraySize = sc.nextInt();
    System.out.println("Please enter a minimum value for the range of ints.");
    min = sc.nextInt();
    System.out.println("Please enter a maximum value for the range of ints.");
    max = sc.nextInt();
    //Making the array and filling it based on the user inputs
    int[] MMMarray = new int[ArraySize];
    int total = 0;
    for (int i = 0; i < ArraySize; i++) {
        x = (int) (Math.random() * ((max - min) + 1)) + min;
        System.out.println(x);
        int RandoNums = (int) x;
        total = total + RandoNums;
        MMMarray[i] = RandoNums;
    }
    //Finding mean/average
    double Mean = (total + 0.0) / ArraySize;
    System.out.println("The mean is: " + Mean);
    //Finding Median/Middle number
    Arrays.sort(MMMarray);
    System.out.println(Arrays.toString(MMMarray));
    if (ArraySize % 2 == 0) {
        System.out.println("The median is: " + ((MMMarray[(ArraySize / 2)] + 0.0) + MMMarray[(ArraySize / 2) - 1]) / 2 + ".");
    } else System.out.println("The median is: " + MMMarray[ArraySize / 2] + ".");
    //How to find mode???????? 

最佳答案

未排序int数组的查找方式:

int freq = 0;
int value = 0;
int length = MMMArray.length;

for (int outer = 0; outer < length; outer++)
{
    int tempFreq = 0;

    for (int inner = 0; inner < length; inner++)
    {
        if (MMMArray[outer] == MMMArray[inner])
        {
            tempFreq++;
        }
    }

    if (tempFreq > freq)
    {
        freq = tempFreq;
        value = MMMArray[outer];
    }
}

System.out.println("Mode is " + value + ", which appears " + freq + " times.");

关于java - 如何编写代码来查找数组中整数的众数,而不使用个人创建的方法,即常规的 "raw code",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59296713/

相关文章:

java - 如何将AbstractButton的标签放在Icon的底部?

r - 使用时间间隔计算另一个数据帧的平均值

JavaScript 数组问题

javascript - typeerror : app. use() 需要中间件函数

opencv - 获取帧序列的平均值

java - 线程中的 MouseMotionListener

java - 关于 Runnable 和 Thread 的混淆

java - 正确调用 Hashmap 的 get() 和 put() 方法。

arrays - 即使找到了,搜索数组也会报告 "not found"

php - 检查数据库中的新条目