如何对矩阵内的单元格和环绕单元格求和

时间:2015-04-22 17:25:18

标签: java

我想要求细胞。我的意思是,周围的细胞。添加我调用的单元格,并使用它周围的值添加该值。这是我到目前为止所做的。

import java.util.Arrays;
import static java.lang.System.*;

public class MatrixSummingRunner {
    public static void main(String args[]) {

        int[][] mat = { { 0, 1, 0, 0, 0, 1, 0 }, { 1, 8, 4, 3, 4, 5, 1 },
                { 0, 2, 7, 8, 9, 8, 0 }, { 0, 6, 7, 6, 2, 5, 0 },
                { 0, 6, 7, 8, 9, 5, 0 }, { 1, 5, 4, 3, 2, 3, 1 },
                { 0, 1, 0, 0, 0, 1, 0 } };
        out.println("Sum of the given values, at {4,2} and the values around it"
                + MatrixSumming(mat, 4, 2));
        out.println("Sum of the given values, at {3,3} and the values around it"
                + MatrixSumming(mat, 3, 3));
        out.println("Sum of the given values, at {5,4} and the values around it"
                + MatrixSumming(mat, 5, 4));
        out.println(toString(mat));
    }
}

那是跑步者,现在我的想法是什么。

import java.util.*;

public class MatrixSumming {
    private int[][] m = { { 4, 2 }, { 3, 3 }, { 5, 4 } }; // load in the matrix
                                                          // values

    public int sum(int[][] mat, int x, int y) {
        int sum = 0;
        for (int item : mat) {
            Sum = getValueAt(x, y) + getValueAt(x++, y) + getValueAt(x--, y)
                    + getValueAt(x--, y++) + getValueAt(x--, y--)
                    + getValueAt(x++, y++) + getValueAt(x++, y--);
        }

        return sum;
    }
}

显然那不起作用。它将它们视为个体变量,给我带来了巨大的问题......

2 个答案:

答案 0 :(得分:0)

这段代码没有任何意义:

   for(int item : mat)
    {
        Sum=getValueAt(x,y) + getValueAt(x++,y) + getValueAt(x--,y) + getValueAt(x--,y++) + getValueAt(x--,y--) + getValueAt(x++,y++) + getValueAt(x++,y--);
    }

对于初学者,您要修改此函数内的x和y变量。相反,只需在适当的地方使用+1和-1。

其次,您从未定义过Sum变量,并且每次循环递增时都会覆盖该值。相反,您需要将值添加到循环触发之前的现有总和中。

这是一个如何计算数组总和的例子:

int sum = 0;
for(int x : array){
   sum = sum+x;
}
System.out.println(sum);

答案 1 :(得分:0)

你也缺少一个方法和对跑步者的引用