Java 如何在数组中找到模式?

Java 如何在数组中找到模式?,java,arrays,math,methods,mode,Java,Arrays,Math,Methods,Mode,这个程序从用户那里输入6个数字,存储在一个数组中,计算它们的平均值和模式。还要计算有多少数字大于平均值。 我的程序代码就是我错的地方 我的意思是正确的,但我在模式中有问题 包装p18 导入java.util.array; 导入java.util.Scanner public class P18 { public static void main(String[] args) { Scanner S=new Scanner(System.in); int[] arr1=new int [6

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

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

包装p18

导入java.util.array; 导入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); 
公共类P18{
公共静态void main(字符串[]args){
扫描仪S=新的扫描仪(System.in);
int[]arr1=新int[6];
对于(int i=0;i<6;++i){
int g=S.nextInt();
arr1[i]=g;
}
int输入=6;
双倍总=0d;
双均值;
对于(int i=0;i maxFreq){
maxFreq=计数[i];
}
}
for(int i=0;i
您必须向用户询问您想要询问的每个数字,如果您想要平均值,则需要使用浮点或双精度

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);
Scanner S=新的扫描仪(System.in);
双平均值,总计;
双输入=6;
双arr1=新的双[输入];

对于(int i=0;i您认为您在哪里读取6个整数?您只调用了一次S.nextInt(),不使用其返回值。这应该在您的循环中完成,以读取多个输入并对其进行处理。

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

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);
Scanner S=新的扫描仪(System.in);
int[]arr1=新int[6];
对于(int i=0;i<6;++i){
int g=S.nextInt();
arr1[i]=g;
}
int输入=6;
双倍总=0d;
双均值;

对于(int i=0;i来说,求平均值很容易;其他答案已经涵盖了这一点

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

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

1) 对数组进行排序

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


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

如果确定平均值为整数,则总数可以是整数,请使用“int”而不是“double”。这是相同的codeTotal仍然可以是int,即使平均值不能。只要输入是双精度(或实数),就不会执行整数除法,因此只有输入和平均值可能(可能)需要小数部分谢谢你的dcod你是天才,那么模式是什么呢?请根据你的建议检查代码哪里错了?
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);