1.矩阵元素相加
今天主要讲解的是矩阵元素相加的实例,我们需要用到Java中的数组所以在编写程序时我们需要提前导入一个不可或缺的包,即java.util.Arrays。
1.1代码演示
package basic;
import java.util.Arrays;
/**
* This is the seventh code. Names and comments should follow my style strictly.
*
* @author WU JUN 2298320301@qq.com.
*/
public class Day7 {
/**
*********************
* The entrance of the program.
*
* @param args
* Not used now.
*********************
*/
public static void main(String args[]) {
matrixElementSumTest();
matrixAdditionTest();
}// Of main
/**
*********************
* Sum the elements of a matrix.
*
* @param paraMatrix
* The given matrix.
* @return The sum of all its elements.
*********************
*/
public static int matrixElementSum(int[][] paraMatrix) {
int resultSum = 0;
for (int i = 0; i < paraMatrix.length; i++) {
for (int j = 0; j < paraMatrix[0].length; j++) {
resultSum += paraMatrix[i][j];
} // Of for j
} // Of for i
return resultSum;
}// Of matrixElementSum
/**
*********************
* Unit test for respective method.
*********************
*/
public static void matrixElementSumTest() {
int[][] tempMatrix = new int[3][4];
for (int i = 0; i < tempMatrix.length; i++) {
for (int j = 0; j < tempMatrix[0].length; j++) {
tempMatrix[i][j] = i * 10 + j;
} // Of for j
} // Of for i
System.out.println("The matrix is: \r\n" + Arrays.deepToString(tempMatrix));
System.out.println("The matrix element sum is: " + matrixElementSum(tempMatrix) + "\r\n");
}// Of matrixElementSumTest
/**
*********************
* Add two matrices. Attention: NO error check is provided at this moment.
*
* @param paraMatrix1
* The first matrix.
* @param paraMatrix2
* The second matrix. It should have the same size as the first
* one's.
* @return The addition of these matrices.
*********************
*/
public static int[][] matrixAddition(int[][] paraMatrix1, int[][] paraMatrix2) {
int[][] resultMatrix = new int[paraMatrix1.length][paraMatrix1[0].length];
for (int i = 0; i < paraMatrix1.length; i++) {
for (int j = 0; j < paraMatrix1[0].length; j++) {
resultMatrix[i][j] = paraMatrix1[i][j] + paraMatrix2[i][j];
} // Of for j
} // Of for i
return resultMatrix;
}// Of matrixAddition
/**
*********************
* Unit test for respective method.
*********************
*/
public static void matrixAdditionTest() {
int[][] tempMatrix = new int[3][4];
for (int i = 0; i < tempMatrix.length; i++) {
for (int j = 0; j < tempMatrix[0].length; j++) {
tempMatrix[i][j] = i * 10 + j;
} // Of for j
} // Of for i
System.out.println("The matrix is: \r\n" + Arrays.deepToString(tempMatrix));
int[][] tempNewMatrix = matrixAddition(tempMatrix, tempMatrix);
System.out.println("The new matrix is: \r\n" + Arrays.deepToString(tempNewMatrix));
}// Of matrixAdditionTest
}// Of class MatrixAddition
1.2代码解析
1、当我们遇到较为复杂的代码时我们需要学会如何看代码,我们一开始拿到代码应该先从该程序的入口函数展开分析。上述代码的main函数中包含了两个方法,一个是matrixElementSumTest,而另一个是matrixAdditionTest。
2、我们先看matrixElementSumTest函数,该函数一开始先定义了一个int类型的三行四列的二维数组。紧接着的两个for循环语句用于对该数组的初始化操作,外层for语句的循环条件是i小于该数组的行数,内层for语句的循环条件是i小于该数组的列数,最后通过两层循环完成对数组的填充。最后的两个打印输出语句,第一个是将该数组的所有元素打印了一遍,第二个printf语句中再次调用了另一个函数matrixElementSum。
3、接下来我们来分析matrixElementSum函数,首先该函数的输入参数是一个int类型的二维数组,然后函数中主要是两个for循环语句,这两个for循环主要用于数组的遍历,将数组的每一个元素取出并且相加。最后再将所有元素和返回到matrixElementSumTest函数中打印输出。
4、main函数中的另一个函数matrixAdditionTest,该函数与matrixElementSumTest函数前面的操作都是一样的,不一样的地方是它在第二个输出语句中调用了matrixAddition函数。然后再将该函数的返回值覆盖到原有的二维数组中,最后再打印该数组。
5、matrixAddition函数传入的参数是两个int类型的二维数组,并且一开始就定义了一个与传入数组相同行列的数组,紧接着就是两个for循环取出数组的元素值进行对应相加,再存入新创建的数组中。最后返回该函数中处理之后的数组,并且在matrixAdditionTest完成打印输出操作
1.3运行结果
2.总结
对于数组的操作还是有一些难度的,但只要我们学会了对数组的遍历我认为数组操作起来就没有什么难点了。通过对数组的学习也让我们对for循环语句有了进一步的理解,当然更重要的是我们需要学会如何看代码,如何分析代码,这些都是按照程序的运行步骤拉进行一一分析的。