【问题标题】:Analasys program max and min and mode and graphing histogram分析程序最大值和最小值以及模式和图形直方图
【发布时间】:2018-05-30 23:09:49
【问题描述】:

嗨,在我的程序中,我想在数组中显示平均数、最大数、最小数和众数。到目前为止,只有我的平均工作量和我的最小值和最大值方法 = 我输入的第一个数字。例如,如果我说我想输入 3 个数字,我输入了 12、15 和 6。最小值和最大值都将输出 12,因为它是输入的第一个数字,这是错误的,所以请帮忙。这是我的代码。

    int amount;
    System.out.println(" Enter the amount of numbers you would like to enter: ");
    amount = scan.nextInt();

    int [] arr = new int [amount];
    int outcome = 1;

    for (int i = 0; i < arr.length; i++){
        System.out.println("Enter a number 1 through 50");
        outcome = scan.nextInt();
        arr [i] = outcome;

    }

    System.out.println(" ");

    System.out.println( " The average is" ); 
    System.out.println(average(arr));
    System.out.println(" ");

    System.out.println( " The lowest value in the array is " ); 
    System.out.println(min(arr));
    System.out.println(" ");

    System.out.println( " The largest value in the array is " ); 
    System.out.println(max(arr));
    System.out.println(" ");


}





public static double average ( int [] arr) {

    double sum = 0;
    int value = arr.length;
    for ( int i = 0; i < arr.length; i++){
        sum += arr [i];
    }
    sum = sum / value;
    return sum;



}

public static int min (int [] arr) {
        int shortest = 0;
        int smallest = 100;
        int length = arr.length;

     for ( int i = 0; i < arr.length; i ++ ) {
        if ( length < smallest)
        shortest += arr[i];
        smallest = arr.length;
     }

       return shortest;
   }

public static int max (int [] arr) {
    int largest = 0;
    int biggest = 0;
    int length = arr.length;

 for ( int i = 0; i < arr.length; i ++ ) {
    if ( length >  largest)
    biggest += arr[i];
    largest = arr.length;
 }

   return biggest;

}

}

【问题讨论】:

  • 我不需要平均值,我需要众数、最大值、最小值以及如何绘制直方图的建议。
  • smallest = arr[0]; 并在您的方法中执行 biggest = arr[0]; 而不是使用 100 和 0。使用数组中的值而不是将其设置为数组中可能不存在的某个值。如果您的数组的大小为 1,那么该值将是您的最小值和最大值 :)
  • 还是不行

标签: java arrays methods


【解决方案1】:

这将非常简单。您的 min 和 max 方法都返回 12 的原因是因为您将最大和最小都设置为 arr.length ,因此仅在一次运行后立即停止 for 循环。此外,对于此类问题,还有更简单的实现。尝试按照以下方式做一些事情:

public int getMax(int[] arr)
{
  int max = arr[0];  //To have a baseline
  for(int i = 1; i < arr.length; i++)
  {
    if(arr[i] > max)
    {
      max = arr[i];
    }
  }
  return max;
}

public int getMin(int[] arr)
{
  int min = arr[0];  //To have a baseline
  for(int i = 1; i < arr.length; i++)
  {
    if(arr[i] < min)
    {
      min = arr[i];
    }
  }
  return min;
}

这既更具可读性,也更易于执行。有什么问题就问吧:-)

【讨论】:

  • 谢谢你,你能不能帮我找到一种方法来获得模式。
  • 你也能帮忙找个模式吗
  • “模式”是什么意思?
  • 如果你的意思是不同数字的出现,这个帖子可能就是你要找的:stackoverflow.com/questions/23946397/…
猜你喜欢
  • 1970-01-01
  • 2017-01-26
  • 2014-04-10
  • 1970-01-01
  • 2012-11-21
  • 2014-11-30
  • 2020-06-20
  • 2019-09-16
  • 1970-01-01
相关资源
最近更新 更多