如何在数组中找到模式?

时间:2016-06-27 19:40:43

标签: java arrays math methods mode

Basic它的程序从用户输入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 < count.length; i++) {
    if (count[i] > maxFreq) {
        maxFreq = count[i];
    }
}

for (int i = 0; i < count.length; i++) {
    if (count[i] == maxFreq) {
        return i;
    }}
return -1;
  }}

4 个答案:

答案 0 :(得分: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<input;i++)
{
    total=total+arr1[i];
}
mean= total/input;

System.out.println("the mean is:" + mean);

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

答案 1 :(得分:0)

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

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


for (int i = 0;i<input;++i){
    arr[i] = S.nextDouble();
}

for(int i=0;i<input;i++)
{
 total=total+arr1[i];
}
mean= total/input;

System.out.println("the mean is:" + mean);

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

1)对数组进行排序。

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

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