java中的矩阵类
我需要创建一个matrix类,它有2个构造函数,以及一个方法,该方法对矩阵中一个数字进行过滤平均,该数字在该数字周围 下面是我的想法,但当我试图编译它时,我得到了一个错误: “需要数组,找到矩阵” 救命啊java中的矩阵类,java,Java,我需要创建一个matrix类,它有2个构造函数,以及一个方法,该方法对矩阵中一个数字进行过滤平均,该数字在该数字周围 下面是我的想法,但当我试图编译它时,我得到了一个错误: “需要数组,找到矩阵” 救命啊 /** * This class represents a two dimensional Matrix * */ public class Matrix { private int[][] _matrix; /** * Constructs a Matrix from a two-d
/**
* This class represents a two dimensional Matrix
*
*/
public class Matrix
{
private int[][] _matrix;
/**
* Constructs a Matrix from a two-dimensional array; the dimensions as well as the values of this Matrix will be the same as the dimensions and values of the two-dimensional array.
*/
public Matrix(int[][] array)
{
for (int i=0; i < array.length;i++)
for (int j=0; j < array[i].length;j++)
_matrix[i][j] = array[i][j];
}
/**
* Constructs a size1 by size2 Matrix of zeroes.
*/
public Matrix(int size1, int size2)
{
for (int i=0; i < size1;i++)
for (int j=0; j < size2;j++)
_matrix[i][j]=0;
}
/**
* Calculates and returns a copy of this Matrix after it has been filtered from noise. All pixels are represented by a number 0-255 inclusive.
*
* @return a copy of this Matrix after it has been filtered from noise
*/
public Matrix imageFilterAverage()
{
Matrix newMatrix = new Matrix(_matrix);
for (int i=0; i < _matrix.length;i++)
for (int j=0; i < _matrix[i].length;j++)
newMatrix[i][j] = _matrix[i-1][j-1] + _matrix[i-1][j] + _matrix[i-1][j+1] + _matrix[i][j-1] + _matrix[i][j] + _matrix[i][j+1] + _matrix[i+1][j-1] + _matrix[i+1][j] + _matrix[i+1][j+1];
}
}
/**
*此类表示二维矩阵
*
*/
公共类矩阵
{
私有int[][]矩阵;
/**
*从二维数组构造矩阵;此矩阵的维度和值将与二维数组的维度和值相同。
*/
公共矩阵(int[][]数组)
{
for(int i=0;i
编辑
嘿,伙计们,谢谢你们的帮助。现在我正在尝试创建一个toString方法,它将打印矩阵,数字之间有tab,但是在最后一行的最后一个数字之后,将没有tab。
真的无法让它工作,不知道如何归还它。但到目前为止,我想到的是:
public String toString()
{
for (int i=0; i < _matrix.length; i++) {
for (int j=0; j < _matrix[i].length; j++)
if (j == (_matrix[i].length - 1))
System.out.print(_matrix[i][j]);
else System.out.print(_matrix[i][j] + "\t");
System.out.println();
}
}
公共字符串toString()
{
对于(int i=0;i<_matrix.length;i++){
对于(int j=0;j<_矩阵[i]。长度;j++)
如果(j==(_矩阵[i].长度-1))
系统输出打印(_矩阵[i][j]);
else系统输出打印(_矩阵[i][j]+“\t”);
System.out.println();
}
}
此行导致错误,因为您无法在矩阵上使用[]
。只能在数组上使用该运算符
此外,这将导致错误,因为您没有将\u矩阵
设置为任何值:
for (int i=0; i < array.length;i++)
for (int j=0; j < array[i].length;j++)
_matrix[i][j] = array[i][j];
for(int i=0;i
在这些行之前添加\u matrix=new int[array.length][array[0.length]
。更改imageFilterAverage()
第一个构造函数也是错误的,因为您首先需要创建矩阵,然后复制数据。我强烈推荐一本关于Java的优秀初学者书籍或Oracle教程。看起来您正在输入随机的内容,并希望它们能够编译/工作<代码>新矩阵[i][j]
。。。您的对象不是数组。您试图[]
访问矩阵的内部数组,但您在矩阵本身上使用它,而不是在矩阵内部的数组上使用它。
for (int i=0; i < array.length;i++)
for (int j=0; j < array[i].length;j++)
_matrix[i][j] = array[i][j];
public Matrix imageFilterAverage() {
Matrix newMatrix = new Matrix(_matrix);
for (int i=0; i < _matrix.length;i++)
for (int j=0; i < _matrix[i].length;j++)
newMatrix._matrix[i][j] = _matrix[i-1][j-1] + _matrix[i-1][j] + _matrix[i-1][j+1] + _matrix[i][j-1] + _matrix[i][j] + _matrix[i][j+1] + _matrix[i+1][j-1] + _matrix[i+1][j] + _matrix[i+1][j+1];
return newMatrix;
}
/**
* Constructs a size1 by size2 Matrix of zeroes.
*/
public Matrix(int size1, int size2) {
_matrix = new int[size1][size2];
}