1
所以我一直在用Java中的二维数组摆弄。我正在通过使用数组作为矩阵来练习。我创建了2个Matrix对象,它们有一个myMatrix二维数组字段。在主要方法中,我称第一个Matrix对象通过addMatrix方法将其自身添加到第二个矩阵(如果可能的话)。我有一个printResultDetail方法来实际打印出正在发生的事情。我想要第一个对象的myMatrix打印出正确格式化的行和列。然后我希望第二个对象的myMatrix对象在前一个的右边打印出来。然后,我希望由第一个对象的myResultMatrix 2D数组给出的新输出矩阵再次向右打印出来。打印两个彼此相邻的2D阵列
如何使数组并排打印?
注意:printResultDetail不正确。我只是想弄清楚如何去做。
import java.util.Arrays;
import java.util.Random;
public class Matrix {
int[][] myMatrix;
int[][] myResultMatrix;
int myMatrixRow;
int myMatrixCol;
Random rand = new Random();
public Matrix(int rowSize, int colSize, int maxVal, int minVal){
myMatrixRow = rowSize;
myMatrixCol = colSize;
myMatrix = new int[rowSize][colSize];
for(int i = 0; i < rowSize; i++){
for(int k = 0; k < colSize; k++){
myMatrix[i][k] = rand.nextInt((maxVal - minVal) + 1) + minVal; //assigns each part of array to rand #
}
}
for(int i = 0; i<myMatrixRow; i++){
System.out.print("[");
for(int j = 0; j<myMatrixCol; j++){
System.out.print(" " + myMatrix[i][j] + " ");
}
System.out.print("]");
System.out.println();
}
//System.out.println(Arrays.deepToString(myMatrix));
}
public int[][] multMatrix(Matrix matrix2){
if(canMultiply(matrix2) == true){
myResultMatrix = new int[myMatrixRow][matrix2.myMatrixCol];
for (int i = 0; i < myMatrixRow; i++) {
for (int j = 0; j < matrix2.myMatrixCol; j++) {
for (int k = 0; k < myMatrixCol; k++) {
myResultMatrix[i][j] += myMatrix[i][k] * matrix2.myMatrix[k][j];
}
}
}
return myResultMatrix;
}else{
myResultMatrix = null;
return null;
}
}
public boolean canMultiply(Matrix matrix2){ //can only multiply if the columns of
//first matrix is equal to the rows of the second
if(myMatrixCol == matrix2.myMatrixRow){
return true;
}else{
return false;
}
}
public int[][] addMatrix(Matrix matrix2){
if(myMatrixRow == matrix2.myMatrixRow && myMatrixCol == matrix2.myMatrixCol){
myResultMatrix = new int[myMatrixRow][myMatrixCol];
for(int i = 0; i < myMatrixRow; i++){
for(int k = 0; k < myMatrixCol; k++){
myResultMatrix[i][k] = myMatrix[i][k] + matrix2.myMatrix[i][k];
}
}
return myResultMatrix;
}else{
myResultMatrix = null;
return null;
}
}
public void printResultDetail(Matrix matrix2){
for(int i = 0; i<myMatrixRow; i++){
System.out.print("[");
for(int j = 0; j<myMatrixCol; j++){
System.out.print(" " + myMatrix[i][j] + " ");
}
System.out.print("] ");
System.out.println();
for(int k = 0; k<matrix2.myMatrixRow; k++){
System.out.print("[");
for(int x = 0; x<matrix2.myMatrixCol; x++){
System.out.print(" " + matrix2.myMatrix[k][x] + " ");
}
System.out.print("]");
}
}
}
public static void main(String[] args){
Matrix firstMatrix = new Matrix(3, 3, 5, 1);
Matrix secondMatrix = new Matrix(3, 3, 5, 1);
System.out.println(Arrays.deepToString(firstMatrix.addMatrix(secondMatrix)));
//System.out.println(Arrays.deepToString(firstMatrix.addMatrix(secondMatrix)));
}
}
为了实现像''array1element''array1element''array2element'您array2element'需要在同一时间进行迭代两个数组,而不是2后1 – csmckelvey 2015-02-06 23:55:48
如果你输出到控制台你”您需要一种方法来接受所有3个矩阵,并一次输出一行,就像您现在要用'this'和'matrix2'的printResultDetail()所做的那样,只有您必须嵌套你的循环或找到一种方法来控制所有3个矩阵具有相同的循环。 – adamdc78 2015-02-06 23:56:35
我的问题是,我应该在添加或乘上矩阵后调用printResultDetail。乘法时,矩阵将有不同的长度。那么我将如何嵌套循环? – noobforce 2015-02-07 00:01:43