添加矩阵
Adding Matrices
在这个程序中,我试图创建一个新方法,可以将创建的两个矩阵相加。为此,我需要检查矩阵是否具有相同的维度,然后打印出添加的矩阵。矩阵中填充了代码中设置的随机数。有人可以帮助创建一种方法,让我可以将其中两个相加吗?
public class Matrix {
private int [][] grid;
/**
* default constructor: creates 3x3 matrix with random values
* in the range 0..9
*/
public Matrix() {
grid = new int[3][3];
for(int x=0; x<3; x++)
for(int y=0; y<3; y++)
grid[x][y] = (int)(Math.random()*10);
}
/**
* Creates matrix of specified size with random values 0..9
* @param size positive integer that represents the number of rows
* and columns in the matrix
*/
public Matrix(int size) {
grid = new int[size][size];
for(int x=0; x<size; x++)
for(int y=0; y<size; y++)
grid[x][y] = (int)(Math.random()*10);
}
/**
* Creates a matrix of specified size with random values 0..9
* @param rows number of rows in matrix
* @param columns number of columns int matrix
*/
public Matrix(int rows, int columns) {
grid = new int[rows][columns];
for(int x=0; x<rows; x++)
for(int y=0; y<columns; y++)
grid[x][y] = (int)(Math.random()*10);
}
/**
* @return String formatted as an m x n matrix of m rows and
* n columns
*/
public String toString() {
int rows = grid.length;
int columns = grid[0].length;
String table = new String("");
for(int x=0; x<rows; x++) {
table = table + '|' + '\t';
for(int y=0; y<columns; y++)
table = table + grid[x][y] + '\t';
table = table + '|' + '\n';
}
return table;
}
/**
* @return true if number of rows equals number of columns
*/
public boolean isSquare() {
return grid.length == grid[0].length;
}
/**
* @param other another matrix to compare to this one
* @return true if this matrix and the other have the same
* number of rows and columns
*/
public boolean sameSize(Matrix other) {
return grid.length == other.grid.length &&
grid[0].length == other.grid[0].length;
}
// main method: for testing
public static void main(String[] args) {
Matrix m = new Matrix();
Matrix n = new Matrix((int)(Math.random()*5)+2);
Matrix o = new Matrix(((int)(Math.random()*5)+2),
((int)(Math.random()*5)+2));
System.out.println ("First matrix:");
System.out.print(m);
System.out.println ("Second matrix:");
System.out.println(n);
System.out.println ("Third matrix:");
System.out.println(o);
if(m.sameSize(n))
System.out.println("First two are the same size");
else
System.out.println("First two are not the same size");
if(o.isSquare())
System.out.println("All three are square matrices");
else
System.out.println("Only first two are square matrices");
}
}
您首先检查矩阵的大小是否相同,然后将两个矩阵中的每个值一一相加,例如
public Matrix sum(Matrix other) {
if (this.sameSize(other)) {
Matrix result = new Matrix(this.grid.length, this.grid[0].length);
for (int i=0; i<this.grid.length; i++) {
for (int j=0; j<this.grid.length; j++) {
result.grid[i][j] = this.grid[i][j] + other.grid[i][j];
}
}
return result;
} else {
return null; // Can't sum those matrices
}
}
public class Matrix {
private final int[][] grid;
private final int width;
private final int height;
public Matrix() {
this(3);
}
public Matrix(int size) {
this(size, size);
}
public Matrix(int rows, int cols) {
grid = createGrid(rows, cols);
width = cols;
height = rows;
}
@Override
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append('[');
for (int row = 0; row < grid.length; row++) {
if (buf.length() > 1)
buf.append(',');
buf.append('[');
for (int col = 0; col < grid[row].length; col++) {
if (col > 0)
buf.append(',');
buf.append(grid[row][col]);
}
buf.append(']');
}
return buf.append(']').toString();
}
public boolean isSquare() {
return width == height;
}
public boolean isSameSize(Matrix m) {
return m != null && width == m.width && height == m.height;
}
public void add(Matrix m) {
if (!isSameSize(m))
return;
for (int row = 0; row < grid.length; row++)
for (int col = 0; col < grid[row].length; col++)
grid[row][col] += m.grid[row][col];
}
private static int[][] createGrid(int rows, int cols) {
Random random = new Random();
int[][] grid = new int[rows][cols];
for (int row = 0; row < grid.length; row++)
for (int col = 0; col < grid[row].length; col++)
grid[row][col] = random.nextInt(10);
return grid;
}
public static void main(String... args) {
Random random = new Random();
Matrix m = new Matrix();
Matrix n = new Matrix(random.nextInt(7));
Matrix o = new Matrix(random.nextInt(7), random.nextInt(7));
System.out.println("First matrix:");
System.out.print(m);
System.out.println("Second matrix:");
System.out.println(n);
System.out.println("Third matrix:");
System.out.println(o);
if (m.isSameSize(n))
System.out.println("First two are the same size");
else
System.out.println("First two are not the same size");
if (o.isSquare())
System.out.println("All three are square matrices");
else
System.out.println("Only first two are square matrices");
n.add(o);
System.out.println(n);
}
}
将此添加到矩阵 class:
/**
* Creates a new Matrix with the values of
* both Matrix(s) added together.
* @param otherMatrix The Matrix to be added.
* @return The new Matrix.
*/
public Matrix add(Matrix otherMatrix) {
if (sameSize(otherMatrix)) {
Matrix newMatrix = new Matrix(grid.length, grid[0].length);
for (int x = 0; x < grid.length; x++) {
for (int y = 0; y < grid[0].length; y++) {
newMatrix.grid[x][y] = grid[x][y] + otherMatrix.grid[x][y];
}
}
return newMatrix;
} else {
throw new Error("The Matrix(s) aren't the same size.");
}
}
然后调用它:
Matrix addedMatrix = matrix.add(otherMatrix);
在这个程序中,我试图创建一个新方法,可以将创建的两个矩阵相加。为此,我需要检查矩阵是否具有相同的维度,然后打印出添加的矩阵。矩阵中填充了代码中设置的随机数。有人可以帮助创建一种方法,让我可以将其中两个相加吗?
public class Matrix {
private int [][] grid;
/**
* default constructor: creates 3x3 matrix with random values
* in the range 0..9
*/
public Matrix() {
grid = new int[3][3];
for(int x=0; x<3; x++)
for(int y=0; y<3; y++)
grid[x][y] = (int)(Math.random()*10);
}
/**
* Creates matrix of specified size with random values 0..9
* @param size positive integer that represents the number of rows
* and columns in the matrix
*/
public Matrix(int size) {
grid = new int[size][size];
for(int x=0; x<size; x++)
for(int y=0; y<size; y++)
grid[x][y] = (int)(Math.random()*10);
}
/**
* Creates a matrix of specified size with random values 0..9
* @param rows number of rows in matrix
* @param columns number of columns int matrix
*/
public Matrix(int rows, int columns) {
grid = new int[rows][columns];
for(int x=0; x<rows; x++)
for(int y=0; y<columns; y++)
grid[x][y] = (int)(Math.random()*10);
}
/**
* @return String formatted as an m x n matrix of m rows and
* n columns
*/
public String toString() {
int rows = grid.length;
int columns = grid[0].length;
String table = new String("");
for(int x=0; x<rows; x++) {
table = table + '|' + '\t';
for(int y=0; y<columns; y++)
table = table + grid[x][y] + '\t';
table = table + '|' + '\n';
}
return table;
}
/**
* @return true if number of rows equals number of columns
*/
public boolean isSquare() {
return grid.length == grid[0].length;
}
/**
* @param other another matrix to compare to this one
* @return true if this matrix and the other have the same
* number of rows and columns
*/
public boolean sameSize(Matrix other) {
return grid.length == other.grid.length &&
grid[0].length == other.grid[0].length;
}
// main method: for testing
public static void main(String[] args) {
Matrix m = new Matrix();
Matrix n = new Matrix((int)(Math.random()*5)+2);
Matrix o = new Matrix(((int)(Math.random()*5)+2),
((int)(Math.random()*5)+2));
System.out.println ("First matrix:");
System.out.print(m);
System.out.println ("Second matrix:");
System.out.println(n);
System.out.println ("Third matrix:");
System.out.println(o);
if(m.sameSize(n))
System.out.println("First two are the same size");
else
System.out.println("First two are not the same size");
if(o.isSquare())
System.out.println("All three are square matrices");
else
System.out.println("Only first two are square matrices");
}
}
您首先检查矩阵的大小是否相同,然后将两个矩阵中的每个值一一相加,例如
public Matrix sum(Matrix other) {
if (this.sameSize(other)) {
Matrix result = new Matrix(this.grid.length, this.grid[0].length);
for (int i=0; i<this.grid.length; i++) {
for (int j=0; j<this.grid.length; j++) {
result.grid[i][j] = this.grid[i][j] + other.grid[i][j];
}
}
return result;
} else {
return null; // Can't sum those matrices
}
}
public class Matrix {
private final int[][] grid;
private final int width;
private final int height;
public Matrix() {
this(3);
}
public Matrix(int size) {
this(size, size);
}
public Matrix(int rows, int cols) {
grid = createGrid(rows, cols);
width = cols;
height = rows;
}
@Override
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append('[');
for (int row = 0; row < grid.length; row++) {
if (buf.length() > 1)
buf.append(',');
buf.append('[');
for (int col = 0; col < grid[row].length; col++) {
if (col > 0)
buf.append(',');
buf.append(grid[row][col]);
}
buf.append(']');
}
return buf.append(']').toString();
}
public boolean isSquare() {
return width == height;
}
public boolean isSameSize(Matrix m) {
return m != null && width == m.width && height == m.height;
}
public void add(Matrix m) {
if (!isSameSize(m))
return;
for (int row = 0; row < grid.length; row++)
for (int col = 0; col < grid[row].length; col++)
grid[row][col] += m.grid[row][col];
}
private static int[][] createGrid(int rows, int cols) {
Random random = new Random();
int[][] grid = new int[rows][cols];
for (int row = 0; row < grid.length; row++)
for (int col = 0; col < grid[row].length; col++)
grid[row][col] = random.nextInt(10);
return grid;
}
public static void main(String... args) {
Random random = new Random();
Matrix m = new Matrix();
Matrix n = new Matrix(random.nextInt(7));
Matrix o = new Matrix(random.nextInt(7), random.nextInt(7));
System.out.println("First matrix:");
System.out.print(m);
System.out.println("Second matrix:");
System.out.println(n);
System.out.println("Third matrix:");
System.out.println(o);
if (m.isSameSize(n))
System.out.println("First two are the same size");
else
System.out.println("First two are not the same size");
if (o.isSquare())
System.out.println("All three are square matrices");
else
System.out.println("Only first two are square matrices");
n.add(o);
System.out.println(n);
}
}
将此添加到矩阵 class:
/**
* Creates a new Matrix with the values of
* both Matrix(s) added together.
* @param otherMatrix The Matrix to be added.
* @return The new Matrix.
*/
public Matrix add(Matrix otherMatrix) {
if (sameSize(otherMatrix)) {
Matrix newMatrix = new Matrix(grid.length, grid[0].length);
for (int x = 0; x < grid.length; x++) {
for (int y = 0; y < grid[0].length; y++) {
newMatrix.grid[x][y] = grid[x][y] + otherMatrix.grid[x][y];
}
}
return newMatrix;
} else {
throw new Error("The Matrix(s) aren't the same size.");
}
}
然后调用它:
Matrix addedMatrix = matrix.add(otherMatrix);