Java黑皮书课后题第8章:**8.6(代数:两个矩阵相乘)编写两个矩阵相乘的方法。编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的乘积
生活随笔
收集整理的這篇文章主要介紹了
Java黑皮书课后题第8章:**8.6(代数:两个矩阵相乘)编写两个矩阵相乘的方法。编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的乘积
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
**8.6(代數:兩個矩陣相乘)編寫兩個矩陣相乘的方法。編寫一個測試程序,提示用戶輸入兩個3*3的矩陣,然后顯示它們的乘積
- 題目
- 題目描述與運行示例
- 破題
- 代碼
題目
題目描述與運行示例
**8.6(代數:兩個矩陣相乘)編寫兩個矩陣相乘的方法:
public static double[][] multiplyMatrix(double[][] a, double[][] b)
編寫一個測試程序,提示用戶輸入兩個3*3的矩陣,然后顯示它們的乘積
兩個矩陣(矩陣a矩陣b)能夠相乘的條件:
a*b若為c,a的列數為n則:
c[i][j] = a[i][1] * b[1][j] + a[i][2] * b[2][j]+……+a[i][n]*b[n][j]
如c[3][3] = a[3][1] * b[1][3] + a[3][2] * b[2][3] + a[3][3] * b[3][3]
運行示例:
Enter matrix1: 1 2 3 4 5 6 7 8 9 Enter matrix2: 0 2 4 1 4.5 2.2 1.1 4.3 5.2 The multipication of the matrices is 1.0 2.0 3.0 0.0 2.0 4.0 5.3 23.9 24.0 4.0 5.0 6.0 * 1.0 4.5 2.2 = 11.6 56.3 58.2 7.0 8.0 9.0 1.1 4.3 5.2 17.9 88.7 92.4破題
代碼
import java.util.Scanner;public class Test8_6 {public static void main(String[] args) {//1. 主方法:新建三個數組a、b、c,長度均為3*3double[][] a = new double[3][3];double[][] b = new double[3][3];double[][] c = new double[3][3];//2. 主方法:從控制臺獲取用戶輸入,使用循環讀入數組a的元素Scanner input = new Scanner(System.in);System.out.print("Enter matrix1: ");for (int i = 0; i < 3 ; i++){for (int j = 0 ; j < 3; j++){a[i][j] = input.nextDouble();}}//3. 主方法:從控制臺獲取用戶輸入,使用循環讀入數組b的元素System.out.print("Enter matrix2: ");for (int i = 0; i < 3 ; i++){for (int j = 0 ; j < 3; j++){b[i][j] = input.nextDouble();}}//4. 主方法:調用方法multiplyMatrix,使用c對象接收返回值c = multiplyMatrix(a, b);//5. 主方法:輸出The multipication……句System.out.println("The multipication of the matrices is");//6. 主方法:調用自定義的輸出方法,傳入a、b、c三個數組output(a, b ,c);}public static double[][] multiplyMatrix(double[][] a, double[][] b){//7. multiplyMatrix方法:聲明一個數組c,長度為3*3double[][] c = new double[3][3];//8. multiplyMatrix方法:使用嵌套循環計算a*b,用c接收,a的列數為n// c[i][j] = a[i][1] * b[1][j] + a[i][2] * b[2][j]+……+a[i][n]*b[n][j]for (int i = 0 ; i < 3 ; i++){for (int j = 0 ; j < 3 ; j++){for (int n = 0; n < 3 ; n++){c[i][j] += a[i][n] * b[n][j];}}}//9. multiplyMatrix方法:返回數組creturn c;}public static void output(double[][] a, double[][] b, double[][] c){//三層循環,最外層行第二層多個同層次循環for (int i = 0 ; i < 3; i++){//數組afor (int j = 0 ; j < 3 ; j++){System.out.print(a[i][j] + " ");}//數組a與數組b之間的空格或*if ( i == 1 ){System.out.print("\t*\t");}else{System.out.print("\t\t");}//數組bfor (int j = 0 ; j < 3 ; j++){System.out.print(b[i][j] + " ");}//數組b與數組cif ( i == 1 ){System.out.print(" =\t");}else{System.out.print("\t");}//數組cfor (int j = 0 ; j < 3 ; j++){System.out.printf("%.1f ", c[i][j]);}System.out.println();}} }總結
以上是生活随笔為你收集整理的Java黑皮书课后题第8章:**8.6(代数:两个矩阵相乘)编写两个矩阵相乘的方法。编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的乘积的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java黑皮书课后题第8章:*8.5(代
- 下一篇: Java黑皮书课后题第8章:*8.7(距