【问题标题】:Elements of array differ from average and less than number数组的元素与平均值不同且小于数字
【发布时间】:2017-01-05 10:21:35
【问题描述】:

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

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

【问题讨论】:

  • 你在'??'遇到什么问题。

标签: java arrays average


【解决方案1】:

这里:

average(array);

您正在调用您的 average 方法...但您没有使用它的结果!

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) {
      ...

注意事项:

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

【讨论】:

    【解决方案2】:

    这是有风险的:

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

    【讨论】:

      猜你喜欢
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      相关资源
      最近更新 更多