如何在arrays中找到模式?

基本它的这个程序从用户输入6个数字,将它们存储在一个数组中,计算它们的均值和模式。 还要计算有多少数字大于均值。 我的程序代码是我错的地方

我的意思是正确的,但我的模式有问题。

包p18;

import java.util.Arrays; import java.util.Scanner;

public class P18 { public static void main(String[] args) { Scanner S=new Scanner(System.in); int[] arr1=new int [6]; for (int i = 0; i < 6; ++i) { int g = S.nextInt(); arr1[i] = g; } int input=6; double total=0d; double mean; for(int i=0;i<input;i++) { total=total+arr1[i]; } mean= total/input; System.out.println("the mean is:" + mean); 

 PROBLEM STARTS FROM HERE MODE PORTION int max=0;//problem starts from here int maxFreq=0; Arrays.sort(arr1); max = arr1[arr1.length-1]; int[] count = new int[max + 1]; for (int i = 0; i < arr1.length; i++) { count[arr1[i]]++; } for (int i = 0; i  maxFreq) { maxFreq = count[i]; } } for (int i = 0; i < count.length; i++) { if (count[i] == maxFreq) { return i; }} return -1; }} 

您根本没有将输入存储到数组中。 您需要添加以下内容来存储用户输入:

 Scanner S=new Scanner(System.in); int[] arr1=new int [6]; for (int i = 0; i < 6; ++i) { int g = S.nextInt(); arr1[i] = g; } int input=6; double total=0d; double mean; for(int i=0;i 

我还将平均值和总数更改为双精度数,以便您可以获得平均值的小数值,否则它将向下舍入。

你认为你在哪里阅读6个整数? 您只调用S.nextInt()一次并且不使用其返回值。 这应该在您的循环中完成,以读取多个输入并使用它们执行某些操作。

您必须要求向用户询问每个号码,如果您想要平均值,则需要使用浮点数或双精度值。

 Scanner S = new Scanner(System.in); double mean, total; double input = 6; double arr1 = new double[input]; for (int i = 0;i 

找到平均值很容易; 其他答案已经涵盖了这一点。

您还需要确保使用循环为数组收集6个值,并为所有这些值调用nextInt()

较难的部分可能是模式。 我认为解决这种模式的方式是:

1)对数组进行排序。

2)创建一个int来保存当前模式的值,另一个int来保存该模式的出现次数。 你还需要一个计数器int。

3)使用循环,遍历排序的数组。 对于数组中的每个数值,计算它发生的次数。 由于它是按排序顺序排列的,因此每次值发生变化时,您都知道您已经计算了所有这些值。 检查事件是否大于当前最大事件,如果是,请更改事件值和模式值。