Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.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 - Fatal编程技术网

java中的矩阵类

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

我需要创建一个matrix类,它有2个构造函数,以及一个方法,该方法对矩阵中一个数字进行过滤平均,该数字在该数字周围

下面是我的想法,但当我试图编译它时,我得到了一个错误: “需要数组,找到矩阵”

救命啊

/**
* 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];
}