持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
基本for 语句
for语句中表达式的执行顺序
for(a;b;c)其中a,b,c为表达式,执行顺序:先执行a表达式,一般为初始化语句,再执行b表达式,一般式判断表达式,若为ture去执行循环体,执行完再执行c表达式,若不满足b表达式,则跳出循环。
矩阵元素相加
1.题目解读
矩阵用二维数组存储,计算二维数组的和,计算两个二维数组对应行列相加组成一个新的二维数组,都需要用到for循环遍历(行优先);对矩阵的赋值也需要循环遍历赋初值,在有循环时要避免死循环,确保循环是有限性的。
二维数组
int[][] tempMatrix = new int[3][4];
tempMatrix.length; //代表行的长度
tempMatrix[0].length; //代表列的长度
思考
在这个代码过程中,对矩阵赋初值是否把他抽为一个方法,可被多次调用,但弊端是赋的初值不够灵活。
/**
* Matrix initialization
* @param row 行长度
* @param column 列长度
* @return
*/
public static int[][] initialMatrix (int row, int column) {
int[][] tempMatrix = new int[row][column];
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
tempMatrix[i][j] = i * 10 + j;
}
}
return tempMatrix;
}
public static void matrixElementSumTest1() {
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;
}
}
System.out.println("The matrix is: \r\n" + Arrays.deepToString(tempMatrix));
System.out.println("The matrix element sum is: " + matrixElementSum(tempMatrix) + "\r\n");
}
public static void matrixElementSumTest2() {
int[][] tempMatrix = initialMatrix(3, 4);
System.out.println("The matrix is: \r\n" + Arrays.deepToString(tempMatrix));
System.out.println("The matrix element sum is: " + matrixElementSum(tempMatrix) + "\r\n");
}
矩阵相乘
题目解读
矩阵相乘(只有第一个矩阵的列和第二个矩阵的行相等): a矩阵(mn),b矩阵(np)则能相乘,且相乘后的矩阵为m*p。故在矩阵相乘是在一定条件下才能进行,需要用到if判断。
矩阵相乘 主要代码思想
//resultMatrix第i行第j列所对应的数值,等于paraFirstMatrix矩阵的第i行分别乘以paraSecondMatrix矩阵的第j列之和
int[][] resultMatrix = new int[m][p];
for (int i = 0; i < m; i++) {
for (int j = 0; j < p; j++) {
for (int k = 0; k < n; k++) {
resultMatrix[i][j] += paraFirstMatrix[i][k] * paraSecondMatrix[k][j];
}
}
}
总结
综合运用条件分支语句和循环语句完成矩阵相乘
条件语句和循环语句在开发中,会经常使用,在使用条件语句时要注意判断条件的逻辑是否正确,在使用循环语句时,当出现多重循环,需要去考虑是否有其他更优方法代替多重循环,因为循环的重数越多,效率也会下降。同时要避免死循环。