首页 / JAVA / java-多维数组的新手
java-多维数组的新手
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-多维数组的新手,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5170字,纯文字阅读大概需要8分钟。
内容图文
我想构建一个程序来操纵多维数组,这是我想学习的新概念.
我认为它可能有几种方法…
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
}
内容总结
以上是互联网集市为您收集整理的java-多维数组的新手全部内容,希望文章能够帮你解决java-多维数组的新手所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。