Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多维数组的新特性_Java_Multidimensional Array_Matrix - Fatal编程技术网

Java 多维数组的新特性

Java 多维数组的新特性,java,multidimensional-array,matrix,Java,Multidimensional Array,Matrix,我想建立一个程序来操作多维数组,这是我想学习的一个新概念 我想它可能有一些方法 public int get(int row, int column) // a method to get the value in row/column // keep in mind columns/rows start at 0 public void set(int row, int column, int value) // a method to set the matrix element t

我想建立一个程序来操作多维数组,这是我想学习的一个新概念

我想它可能有一些方法

public int get(int row, int column)
//  a method to get the value in row/column
//  keep in mind columns/rows start at 0


public void set(int row, int column, int value)
// a method to set the matrix element to the value
// again keep in mind columns/rows start at 0


public void negate()
// method that negates through each element

public void add(Matrix m)
// adds the matrix m to this
有人能告诉我这是不是一个正确的方法,我该怎么做?
提前感谢

看看这个实现并对其进行分析,如果这是家庭作业,那么如果您不知道发生了什么,“剪贴板继承”对您没有好处

    public class Matrix
{
    private double[][] matrixData;

    private int col;

    private int row;

    /**
     * Create matrix of zero size
     */
    public Matrix()
    {
        this(0);
    }

    public Matrix(double[][] matrixData)
    {
        this.matrixData = matrixData;

        this.row = matrixData.length;
        this.col = matrixData[0].length;
    }

    public Matrix(double[] matrixData)
    {
        this.row = matrixData.length;
        for (int i = 0, size = matrixData.length; i < size; i++)
        {
            this.matrixData[0][i] = matrixData[i];
        }
    }

    public Matrix(int size)
    {
        this.matrixData = new double[size][size];
        this.col = size;
        this.row = size;
    }

    public Matrix(int row, int col)
    {
        matrixData = new double[row][col];
        this.row = row;
        this.col = col;
    }

    /**
     * Static method which creates a matrix with a single column.
     * 
     * @param input
     * @return
     */
    public static Matrix createColumnMatrix(final double input[])
    {
        double result[][] = new double[input.length][1];
        for (int i = 0; i < input.length; i++)
            result[i][0] = input[i];

        return new Matrix(result);
    }

    /**
     * Static method which creates a matrix with a single row.
     * 
     * @param input
     * @return
     */
    public static Matrix createRowMatrix(final double input[])
    {
        double result[][] = new double[1][input.length];
        for (int i = 0, size = input.length; i < size; i++)
            result[0][i] = input[i];

        return new Matrix(result);
    }

    /**
     * Convert the matrix into a one dimentional matrix
     * 
     * @return
     */
    public double[] toPackedArray()
    {
        int size = row * col;
        int index = 0;
        double[] results = new double[size];
        for (int i = 0; i < row; i++)
            for (int j = 0; j < col; j++)
                results[index++] = matrixData[i][j];

        return results;
    }

    /**
     * Adds the specified value to given cell in the matrix.
     * 
     * @param row
     * @param col
     * @param value
     */
    public void add(final int row, final int col, final double value)
    {
        matrixData[row][col] += value;
    }

    /**
     * Sets every cell in a matrix to zero.
     */
    public void clear()
    {
        for (int i = 0; i < row; i++)
            for (int j = 0; j < col; j++)
                matrixData[i][j] = 0;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException
    {
        return new Matrix(matrixData);
    }

    @Override
    public boolean equals(Object obj)
    {
        if (obj == null)
        {
            return false;
        }
        if (!(obj instanceof Matrix))
        {
            return false;
        }
        Matrix that = (Matrix)obj;
        for (int i = 0; i < row; i++)
            for (int j = 0; j < col; j++)
            {
                if (matrixData[i][j] != that.get(i,j))
                    return false;
            }

        return true;
    }

    public void print()
    {
        for (int i = 0; i < matrixData.length; i++)
        {
            for (int j = 0; j < matrixData[i].length; j++)
            {
                System.out.print(matrixData[i][j] + ", ");
            }
            System.out.println();
        }
    }

    /**
     * Gets one column of a matrix object as a new matrix object.
     * 
     * @param col
     * @return
     */
    public Matrix getCol(final int col)
    {
        double[] results = new double[matrixData[col].length];
        for (int i = 0; i < row; i++)
            results[i] = matrixData[i][col];

        return Matrix.createColumnMatrix(results);
    }

    /**
     * Gets one row of a matrix object as a new matrix object.
     * 
     * @param row
     * @return
     */
    public Matrix getRow(final int row)
    {
        double[] results = new double[this.row];
        for (int i = 0; i < col; i++)
            results[i] = matrixData[row][i];

        return Matrix.createRowMatrix(results);
    }

    /**
     * Returns the sum of every cell in a matrix object.
     * 
     * @return
     */
    public double sum()
    {
        double total = 0;
        for (int i = 0; i < row; i++)
            for (int j = 0; j < col; j++)
            {
                total += matrixData[i][j];
            }
        return total;
    }

    /**
     * Determines if every cell in a matrix object is zero.
     * 
     * @return
     */
    public boolean isZero()
    {
        for (int i = 0; i < row; i++)
            for (int j = 0; j < col; j++)
            {
                if (matrixData[i][j] != 0)
                    return false;
            }

        return true;
    }

    /**
     * Get given value at a specific location
     * 
     * @param row
     * @param col
     * @return
     */
    public double get(int row, int col)
    {
        return matrixData[row][col];
    }

    public int getCols()
    {
        return col;
    }

    public int getRows()
    {
        return row;
    }

    public static Matrix identity(final int size)
    {
        final Matrix result = new Matrix(size,size);

        for (int i = 0; i < size; i++)
        {
            result.set(i,i,1);
        }
        return result;
    }

    /**
     * Set given row and column using 0 based indexes
     * 
     * @param row
     * @param col
     * @param value
     */
    public void set(int row, int col, double value)
    {
        matrixData[row][col] = value;
    }

    /**
     * Get the copy of the current matrix
     * 
     * @return
     */
    public double[][] getRawMatrix()
    {
        double[][] copy = new double[matrixData.length][];
        for (int i = 0; i < matrixData.length; i++)
        {
            copy[i] = new double[matrixData[i].length];
            for (int j = 0; j < matrixData[i].length; j++)
                copy[i][j] = matrixData[i][j];
        }
        return copy;
    }

    public static void dump(double[] arr)
    {
        for (int i = 0; i < arr.length; i++)
        {
            System.out.print(arr[i] + ", ");
        }
    }

    public void dump()
    {
        dump(System.out);
    }

    public void dump(PrintStream ps)
    {
        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < col; j++)
            {
                ps.print(matrixData[i][j] + ", ");
            }
            ps.println();
        }
        ps.println();
    }

    public void add(Matrix contribution)
    {
        // TODO Auto-generated method stub

    }
公共类矩阵
{
专用双[]矩阵扩展数据;
私人国际学院;
私人int row;
/**
*创建零大小的矩阵
*/
公共矩阵()
{
这(0);
}
公共矩阵(双[][]矩阵扩展数据)
{
this.matrixData=matrixData;
this.row=matrixData.length;
this.col=matrixData[0]。长度;
}
公共矩阵(双[]矩阵扩展数据)
{
this.row=matrixData.length;
for(int i=0,size=matrixData.length;i//  a method to get the value in row/column
//  keep in mind columns/rows start at 0
public int get(int row, int column)
int[][] multi = new int[2][3]; // this mda has two rows and three columns
int el = multi[0][1]; // el is in the first row, second column
for (int rowNum = 0; rowNum < multi.length; rowNum++) {
    for (int colNum = 0; colNum < multi[rowNum].length; colNum++) {
        int currentElement = multi[rowNum][colNum];
    }
}