简体   繁体   English

彼此相邻打印两个2D阵列

[英]Printing two 2D Arrays Next to Each Other

So I've been fiddling around with 2D arrays in java. 所以我一直在研究Java中的2D数组。 I am practicing by using the arrays as matrices. 我正在通过使用数组作为矩阵进行练习。 I create 2 Matrix objects, which have a myMatrix 2D array field. 我创建了2个Matrix对象,它们具有myMatrix 2D数组字段。 In the main method, I call the first Matrix object to add itself to the second matrix if it is possible, through the addMatrix method. 在main方法中,我可以通过addMatrix方法调用第一个Matrix对象以将自身添加到第二个矩阵中。 I have a printResultDetail method to actually print out what is happening. 我有一个printResultDetail方法可以实际打印出正在发生的事情。 I want the first object's myMatrix to print out with rows and columns properly formatted. 我希望第一个对象的myMatrix打印出格式正确的行和列。 Then I want the second object's myMatrix object to print out on the right of the previous. 然后,我要在前一个对象的右侧打印出第二个对象的myMatrix对象。 I then want the new output matrix, given by the first object's myResultMatrix 2D array, to printed out again to the right. 然后,我希望由第一个对象的myResultMatrix 2D数组给出的新输出矩阵再次在右侧打印出来。

How do I make the arrays print out side by side? 如何使阵列并排打印?

Note: the printResultDetail is incorrect. 注意:printResultDetail不正确。 I was just trying to figure out how to do it. 我只是想弄清楚该怎么做。

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)));
}
}

This code below will print: 下面的代码将打印:

矩阵并排

maybe you can use as sample. 也许您可以用作示例。

public class Test {

    public static void main(String[] args) {
        double[][] matrixLeft = {{1,5,2,8,4,70,55,80},{3,7,4,2,6,60,30,70}};
        double[][] matrixRight = {{8,1,6,4,2,10,40,60},{1,5,2,8,4,70,50,80},{3,7,4,2,6,60,30,70}};

        int endOfLoop = matrixLeft.length >  matrixRight.length ? matrixLeft.length : matrixRight.length;
        for(int i = 0; i < endOfLoop; i++){
            if(matrixLeft.length > i){
                printLine(matrixLeft[i]);
                System.out.print("     ");
            } else {
                printBlankLine(matrixLeft[0].length);
            }

            if(matrixRight.length > i){
                printLine(matrixRight[i]);
            }
            System.out.println();
        }
    }

    private static void printLine(double[] line){
        for(double number : line){
            System.out.print(number + " ");
        }
    }

    private static void printBlankLine(int lenght){
        for(int i=0; i < lenght; i++){
            System.out.print("     ");
        }
    }

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM