
public static int max(int a[][]) {
int maxElement = IntegerMIN_VALUE;
for (int row = 0; row < alength; row++) {
for (int col = 0; col < a[row]length; col++){
if (a[row][col] > maxElement)
maxElement = a[row][col];
}
}
return maxElement;
}
public class Matrix {
private int m, n;
private double[][] matrix;
public Matrix(int m, int n) {
thisn = n;
thism = m;
if (n == 0 || m == 0) {
throw new RuntimeException();
}
matrix = new double[m][n];
}
public void init(double value) {
if (valuelength != m n) {
throw new RuntimeException();
}
for (int i = 0, a = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
matrix[i][j] = value[a];
a++;
}
}
}
public Matrix mul(Matrix x) {
if (n != xm) {
throw new RuntimeException();
}
Matrix c = new Matrix(n, xm);
for (int i1 = 0; i1 < m; i1++) {
for (int i3 = 0; i3 < xn; i3++) {
for (int i2 = 0; i2 < n; i2++) {
cmatrix[i1][i3] += matrix[i1][i2] xmatrix[i2][i3];
}
}
}
return c;
}
public String toString() {
StringBuffer s = new StringBuffer();
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
sappend(matrix[i][j] + " ");
}
sappend("\n");
}
return stoString();
}
public static void main(String[] args) {
Matrix a = new Matrix(2, 2);
Matrix b = new Matrix(2, 2);
ainit(new double[] { 1, 7, 8, 3 });
binit(new double[] { 2, 5, 6, 4 });
Matrix c = amul(b);
Systemoutprintln(c);
}
}
两个类,一个是矩阵对象类Matrix,另一个是测试类MatrixTest
可以实现矩阵创建,赋值,转置,加法,支持行列数不同的矩阵
注1,转置方法将输出一个新的矩阵,并不改变原有矩阵的内容
注2:加法方法是aadd(b),b不发生变化,a发生变化,加法将改变a矩阵的内容,不会产生新矩阵
public class Matrix {
private int rows;
private int columns;
private Integer[][] m;
// 行列构造法
public Matrix(int rows, int columns) {
thisrows = rows;
thiscolumns = columns;
thism = new Integer[rows][columns];
}
// 二维数组构造法
public Matrix(Integer[][] m) {
thism = m;
thisrows = mlength;
thiscolumns = m[0]length;
}
// 转置
public Matrix exchange() {
Integer[][] result = new Integer[columns][rows];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
result[j][i] = m[i][j];
}
}
return new Matrix(result);
}
// 加法
public void add(Matrix obj) {
if (objgetRows() != rows || objgetColumns() != columns) {
Systemoutprintln("不同行列的矩阵不能相加");
} else {
Integer[][] objarray = objtoArray();
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
m[i][j] += objarray[i][j];
}
}
}
}
// 矩阵赋值
public void setValue(int row, int column, int value) {
if (row < rows && column < columns) {
m[row][column] = value;
} else {
Systemoutprintln("索引超出边界");
}
}
public int getRows() {
return rows;
}
public int getColumns() {
return columns;
}
public Integer[][] toArray() {
return m;
}
public String toString() {
String result = "";
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
result = result + m[i][j] + " ";
}
result += "\r\n";
}
return result;
}
}
public class MatrixTest {
public static void main(String[] args) {
Matrix m1 = new Matrix(2, 3);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
m1setValue(i, j, i + j);
}
}
Systemoutprintln(m1toString());
Systemoutprintln(m1exchange()toString());
Matrix m2 = new Matrix(2, 3);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
m2setValue(i, j, (i + 1) (j + 1));
}
}
Systemoutprintln(m2toString());
m1add(m2);
Systemoutprintln(m1toString());
}
}
代码如下:
import javautilRandom;public class App26 {
static int[][] creat() {
int[][] arr = new int[3][4];
Random random = new Random(SystemcurrentTimeMillis());
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
arr[i][j] = randomnextInt(100);
}
}
return arr;
}
static void output(int[][] arr) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
Systemoutprint(Stringformat("%2d ", arr[i][j]));
}
Systemoutprintln();
}
}
public static void main(String[] args) {
int[][] arr = creat();
int max = IntegerMIN_VALUE;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
if (arr[i][j] > max) {
max = arr[i][j];
}
}
}
Systemoutprintln("矩阵中最大值是:" + max);
output(arr);
}
}
假设我们有一个3x3的矩阵`matrix`,可以通过以下代码求其对角线元素之和:
```
int sum = 0; // 初始化对角线元素之和为0
for (int i = 0; i < 3; i++) {
sum += matrix[i][i]; // 累加左上到右下对角线元素
sum += matrix[i][2 - i]; // 累加右上到左下对角线元素
}
```
在这个示例中,我们使用了一个循环来遍历矩阵的对角线元素。具体来说,我们累加了矩阵左上角到右下角和右上角到左下角两个方向上的对角线元素。
首先,我们从左上角到右下角遍历主对角线上的元素,即矩阵第一行第一列、第二行第二列、第三行第三列的元素。由于这些元素在矩阵中的索引都满足`rowIndex == columnIndex`的条件,因此我们可以使用`matrix[i][i]`来获取它们,然后将其添加到对角线元素之和中。
接下来,我们从右上角到左下角遍历副对角线上的元素,即矩阵第一行第三列、第二行第二列、第三行第一列的元素。由于这些元素在矩阵中的索引满足`rowIndex + columnIndex == 2`的条件,因此我们可以使用`matrix[i][2 - i]`来获取它们,然后将其添加到对角线元素之和中。
最终,我们得到的`sum`就是矩阵的对角线元素之和。
public class Test
{
public static void main( String[] args )
{
int[][] a={ {1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5},
{1,2,3,4,5},
};
for(int i=0;i<5;i++)
{ for(int k=0;k<5;k++)
Systemoutprint(a[i][k]+" ");
Systemoutprintln();
}
}
}
int a [][]= new int [4][4];
for (int i = 0; i <4; i++) {
int k=0;
for (int j = 0; j <4; j++) {
a[i][j]=k++;
}
}
for (int i = 0; i <4; i++) {
int k=0;
for (int j = 0; j <4; j++) {
Systemoutprint(a[i][j]+" -- ");
}
Systemoutprintln();
}
以上就是关于问道java题,输出矩阵最大值全部的内容,包括:问道java题,输出矩阵最大值、JAVA程序设计:设A为m行n列矩阵,B为n行k列矩阵,C为m行k列矩阵。、如何用java程序利用二维数组创建一个矩阵,编写方法完成该矩阵的逆转,两个矩阵之和。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)