Java實(shí)現(xiàn)矩陣加減乘除及轉(zhuǎn)制等運(yùn)算功能示例
本文實(shí)例講述了Java實(shí)現(xiàn)矩陣加減乘除及轉(zhuǎn)制等運(yùn)算功能。分享給大家供大家參考,具體如下:
Java初學(xué),編寫矩陣預(yù)算程序,當(dāng)做工具,以便以后寫算法時(shí)使用。
public class MatrixOperation {
public static int[][] add(int[][] matrix_a, int[][] matrix_b) {
int row = matrix_a.length;
int col = matrix_a[0].length;
int[][] result = new int[row][col];
if (row != matrix_b.length || col != matrix_b[0].length) {
System.out.println("Fault");
} else {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
result[i][j] = matrix_a[i][j] + matrix_b[i][j];
}
}
}
return result;
}
public static int[][] sub(int[][] matrix_a, int[][] matrix_b) {
int row = matrix_a.length;
int col = matrix_a[0].length;
int[][] result = new int[row][col];
if (row != matrix_b.length || col != matrix_b[0].length) {
System.out.println("Fault");
} else {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
result[i][j] = matrix_a[i][j] - matrix_b[i][j];
}
}
}
return result;
}
public static int[][] dot(int[][] matrix_a, int[][] matrix_b) {
/*
* matrix_a's dimention m*p matrix_b's dimention p*n. return dimention
* m*n
*/
int row = matrix_a.length;
int col = matrix_a[0].length;
int[][] result = new int[row][col];
if (col != matrix_b.length) {
System.out.println("Fault");
} else {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
result[i][j] = 0;
for (int k = 0; k < col; k++) {
result[i][j] += matrix_a[i][k] * matrix_b[k][j];
}
}
}
}
return result;
}
public static int[][] dot(int[][] matrix_a, int b) {
int row = matrix_a.length;
int col = matrix_a[0].length;
int[][] result = new int[row][col];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
result[i][j] = matrix_a[i][j] * b;
}
}
return result;
}
public static int[][] mul(int[][] matrix_a, int[][] matrix_b) {
/*
* matrix_a's dimention m*n matrix_b's dimention m*n. return dimention
* m*n
*/
int row = matrix_a.length;
int col = matrix_a[0].length;
int[][] result = new int[row][col];
if (row != matrix_b.length || col != matrix_b[0].length) {
System.out.println("Fault");
} else {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
result[i][j] = matrix_a[i][j] * matrix_b[i][j];
}
}
}
return result;
}
public static int[][] transport(int[][] matrix_a) {
int row = matrix_a.length;
int col = matrix_a[0].length;
int[][] result = new int[row][col];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
result[j][i] = matrix_a[i][j];
}
}
return result;
}
public static void print(int[][] matrix) {
int row = matrix.length;
int col = matrix[0].length;
for (int i = 0; i < row; i++) {
System.out.print("[");
for (int j = 0; j < col; j++) {
System.out.print(matrix[i][j]);
if (j != col - 1) {
System.out.print(", ");
}
}
System.out.print("]\n");
}
}
public static void main(String[] args) {
int[][] a = { { 1, 2 }, { 3, 4 } };
int[][] b = { { 7, 8 }, { 6, 5 } };
int[][] c = add(a, b);
System.out.println("腳本之家測試結(jié)果如下:");
System.out.println("matrix a = ");
print(a);
System.out.println("matrix b = ");
print(b);
System.out.println("matrix a + b = ");
print(c);
c = sub(a, b);
System.out.println("matrix a - b = ");
print(c);
int[][] d = dot(a, b);
System.out.println("matrix a dot b = ");
print(d);
int[][] e = dot(a, 3);
System.out.println("matrix a * 3 = ");
print(e);
int[][] f = transport(a);
System.out.println("matrix a.T = ");
print(f);
int[][] g = mul(a, b);
System.out.println("matrix a * b = ");
print(g);
}
}
運(yùn)行結(jié)果:

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
泛談Java中的不可變數(shù)據(jù)結(jié)構(gòu)
開發(fā)人員通常認(rèn)為擁有final引用,或者val在Kotlin或Scala中,足以使對象不可變。這篇博客文章深入研究了不可變引用和不可變數(shù)據(jù)結(jié)構(gòu),下面小編來和大家一起學(xué)習(xí)它2019-05-05
使用@Validated注解進(jìn)行校驗(yàn)卻沒有效果的解決
這篇文章主要介紹了使用@Validated注解進(jìn)行校驗(yàn)卻沒有效果的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04
解決java數(shù)值范圍以及float與double精度丟失的問題
下面小編就為大家?guī)硪黄鉀Qjava數(shù)值范圍以及float與double精度丟失的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06
Java Morris遍歷算法及其在二叉樹中的應(yīng)用
Morris遍歷是一種基于線索二叉樹的遍歷算法,可以在不使用?;蜻f歸的情況下,實(shí)現(xiàn)二叉樹的前序、中序和后序遍歷。該算法利用二叉樹中的空指針或線索指針,將遍歷序列嵌入到原二叉樹中,實(shí)現(xiàn)了常數(shù)級(jí)別的空間復(fù)雜度,適用于對空間要求較高的場景2023-04-04

