繁体   English   中英

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

[英]Elements of array differ from average and less than number

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

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
        }
    }
}

这里:

average(array);

你正在调用你的平均方法...但你没有使用它的结果!

double averageForArray = average(array);

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

int deltaGivenByUser = scan.nextInt();

for(int i = 0; i < array.length; i++){
  for(int j = 0; j < array.length; j++){
    if(Math.abs(array[i][j] - average) >= deltaGivenByUser) {
      ...

笔记:

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

这是有风险的:

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];
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM