对单个数组进行双数组操作

时间:2012-12-15 11:34:40

标签: java arrays

public void calculatePercentage(int exam[][])
    {
        int perc = 0;
        for (int i = 0; i < examen.length; i++)
        {
            for (int[] score : exam)
                perc += score;
            perc /= exam.length;
        }
    }

您好, 我真的被困在这一个。我想在参数exam [] []的基础上创建一个新的mathod calculatePercentages。双阵列考试包含3行元素。该方法必须做的是简单计算每一行的总和。答案可能很简单,但我不知道该怎么做。 对于单个数组,我想代码是:

double perc = 0;
    for(int score : exam)
    {
            perc += score;
    }
    perc /= (exam.length);
    return perc;

考试[] []可能如下:

| 10 12 18 5 3 | | 12 3 5 15 20 | | 20 15 13 11 9 |

输出百分比[]应该如下:

{48,55,68}百分比[]的每个元素是1行考试的元素之和[]

2 个答案:

答案 0 :(得分:3)

  

双阵列考试包含3行元素。该方法必须做的是简单计算每一行的总和。

这个名字毫无意义,但它可以做你想做的事。

public int[] calculatePercentage(int exam[][]) {
    int[] sums = new int[exam.length];
    for (int i = 0; i < exam.length; i++) {
         int sum = 0;
         for (int j = 0; j < exam[i].length; j++) {
              sum += exam[i][j];
         }
         sums[i] = sum;
    }
    return sums;
}

双数组也是double[],你说的是二维int数组int[][]

修改

Pshemo指出可以采用更短的解决方案:

public int[] calculatePercentage(int exam[][]) {
    int[] sums = new int[exam.length];
    for (int i = 0; i < exam.length; i++) {
         for (int j = 0; j < exam[i].length; j++) {
              sums[i] += exam[i][j];
         }
    }
    return sums;
}

甚至只是

public int[] calculatePercentage(int exam[][]) {
    int[] sums = new int[exam.length];
    for (int i = 0; i < exam.length; i++)
         for (int j = 0; j < exam[i].length; j++)
              sums[i] += exam[i][j];
    return sums;
}

但我仍然更喜欢第一个,因为它的可读性。

答案 1 :(得分:0)

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

    }

使用每个

for (int x[] : exam) {
      for (int y : x) {

        sum += y;
      }
}