数组元素与平均值不同,小于数字

时间:2017-01-05 10:21:36

标签: java arrays average

我有小问题,也许任何人都可以帮助我。我有一个随机元素数组,然后计算平均值并扫描用户的数字。 我查看的数组元素数量与平均值相差小于从用户扫描的数字。

public static double average(int[][] array){
    double average = 0;
    int sum = 0;
    for(int i = 0; i < array.length; i++){
        for(int j = 0; j < array.length; j++){
          sum += array[i][j];
        }
    }
    average = (double) sum/array.length;
    return average;
}

public static void main(String[] args) {
    Random rnd = new Random();
    Scanner scan = new Scanner(System.in);

    int[][] array = new int[4][4];
    for(int i = 0; i < array.length; i++){
        for(int j = 0; j < array.length; j++){
            array[i][j] = rnd.nextInt(10);
        }
    }

    int a = scan.nextInt();
    average(array);
    int elements = 0;
    for(int i = 0; i < array.length; i++){
    for(int j = 0; j < array.length; j++){
        if(array[i][j]) {
          // ?? need help here
        }
    }
}

2 个答案:

答案 0 :(得分:2)

下面:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{

    app.UseExceptionHandler("/error");

}

您正在调用平均值方法...但您 使用其结果!

average(array);

允许您稍后比较与该值,例如:

double averageForArray = average(array);

注意:

  • 上面是&#34;伪代码&#34;水平;我没有通过编译器运行它;所以要小心微妙的错误/错别字。我的代码旨在为您提供想法如何做事;它不适用于&#34;复制/粘贴/解决&#34;。
  • 请查看命名。一个变量名称,如&#34; a&#34;没有说任何东西。我的名字deltaGivenByUser可能并不完美,但至少它给了一些的想法,该变量将用于什么。
  • 然后仔细看看如何使用扫描仪;例如,使用hasNextInt()方法。现在,当用户提供的数字不是数字
  • 时,您的代码将失败
  • 也是分开的东西:你有一个很好的计算平均值的方法;您还可以创建另一个接收用户提供的值的方法;在主要方法之外进行处理

答案 1 :(得分:1)

这很危险:

for(int i = 0; i < array.length; i++){
  for(int j = 0; j < array.length; j++){
  sum += array[i][j];
}

您正在为两个循环使用外部数组的大小。最好使用子数组的实际大小:

 for(int i = 0; i < array.length; i++) {
      int[] subArray = array[i];
      for(int j = 0; j < subArray.length; j++){
      sum += subArray[j];
 }