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

&引用;找不到符号“;测试Java代码时

&引用;找不到符号“;测试Java代码时,java,compiler-errors,Java,Compiler Errors,我已经开始编写一个类来为矩阵建模,编译器给了我以下消息: Matrix.java:4: cannot find symbol symbol : constructor Matrix(int[][]) location: class Matrix Matrix y = new Matrix(x); Matrix.java:4:找不到符号 符号:构造函数矩阵(int[]] 位置:类别矩阵 矩阵y=新矩阵(x); 这是我试图编译的代码: public class Matrix<E>

我已经开始编写一个类来为矩阵建模,编译器给了我以下消息:

Matrix.java:4: cannot find symbol symbol : constructor Matrix(int[][]) location: class Matrix Matrix y = new Matrix(x); Matrix.java:4:找不到符号 符号:构造函数矩阵(int[]] 位置:类别矩阵 矩阵y=新矩阵(x); 这是我试图编译的代码:

public class Matrix<E> {
    public static void main(String[] args) {
        int[][] x = {{1, 2, 3}, {1, 2, 3}, {1, 2, 3}, {1, 2, 3}};
        Matrix y = new Matrix(x);
        System.out.println(y.getRows());
        System.out.println(y.getColumns());
    } 
    private E[][] matrix;
    public Matrix(E[][] matrix) {this.matrix = matrix;}
    public E[][] getMatrix() {return matrix;}
    public int getRows(){return matrix.length;}
    public int getColumns(){return matrix[0].length;}
}
公共类矩阵{
公共静态void main(字符串[]args){
int[]x={{1,2,3},{1,2,3},{1,2,3},{1,2,3},{1,2,3};
矩阵y=新矩阵(x);
System.out.println(y.getRows());
System.out.println(y.getColumns());
} 
私有E[][]矩阵;
公共矩阵(E[][]矩阵){this.Matrix=Matrix;}
公共E[]getMatrix(){return matrix;}
public int getRows(){return matrix.length;}
public int getColumns(){返回矩阵[0].length;}
}

所以,我的问题是,为什么会出现这个错误,我应该修改什么来修复这个错误?

Java中没有通用的数组创建。请参见

Java中没有通用数组创建。请参见尝试使用
Integer[][]
而不是
int[][]
。构造函数需要前者(因为没有基元类型参数),而要传递后者。

尝试使用
Integer[][]
而不是
int[][]
。您的构造函数需要前者(因为没有基元类型参数),而您要传递的是后者。

如下所示:

public class Matrix<E> {
    public static void main(String[] args) {
        Integer [][] x = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {0, 1, 0}};
        Matrix<Integer> y = new Matrix<Integer>(x);
        System.out.println(y.getRows());
        System.out.println(y.getColumns());

        System.out.println("before: " + y);
        Integer [][] values = y.getMatrix();
        values[0][0] = 10000;
        System.out.println("after : " + y);
    }
    private E[][] matrix;
    public Matrix(E[][] matrix) {this.matrix = matrix;}
    public E[][] getMatrix() {return matrix;}
    public int getRows(){return matrix.length;}
    public int getColumns(){return matrix[0].length;}
    public String toString()
    {
        StringBuilder builder = new StringBuilder(1024);
        String newline = System.getProperty("line.separator");

        builder.append('[');
        for (E [] row : matrix)
        {
            builder.append('{');
            for (E value : row)
            {
                builder.append(value).append(' ');
            }
            builder.append('}').append(newline);
        }
        builder.append(']');

        return builder.toString();
    }
}
公共类矩阵{
公共静态void main(字符串[]args){
整数[][]x={{1,2,3},{4,5,6},{7,8,9},{0,1,0};
矩阵y=新矩阵(x);
System.out.println(y.getRows());
System.out.println(y.getColumns());
System.out.println(“之前:+y”);
整数[][]值=y.getMatrix();
数值[0][0]=10000;
System.out.println(“之后:+y”);
}
私有E[][]矩阵;
公共矩阵(E[][]矩阵){this.Matrix=Matrix;}
公共E[]getMatrix(){return matrix;}
public int getRows(){return matrix.length;}
public int getColumns(){返回矩阵[0].length;}
公共字符串toString()
{
StringBuilder=新的StringBuilder(1024);
字符串newline=System.getProperty(“line.separator”);
builder.append('[');
对于(E[]行:矩阵)
{
append('{');
对于(E值:行)
{
builder.append(value.append(“”);
}
append('}').append(换行符);
}
builder.append(']');
返回builder.toString();
}
}
编译并在我的机器上运行

您需要考虑其他事项:封装以及“private”何时不是private。查看对代码的修改,看看我是如何修改您的“私有”矩阵的。

像这样尝试:

public class Matrix<E> {
    public static void main(String[] args) {
        Integer [][] x = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {0, 1, 0}};
        Matrix<Integer> y = new Matrix<Integer>(x);
        System.out.println(y.getRows());
        System.out.println(y.getColumns());

        System.out.println("before: " + y);
        Integer [][] values = y.getMatrix();
        values[0][0] = 10000;
        System.out.println("after : " + y);
    }
    private E[][] matrix;
    public Matrix(E[][] matrix) {this.matrix = matrix;}
    public E[][] getMatrix() {return matrix;}
    public int getRows(){return matrix.length;}
    public int getColumns(){return matrix[0].length;}
    public String toString()
    {
        StringBuilder builder = new StringBuilder(1024);
        String newline = System.getProperty("line.separator");

        builder.append('[');
        for (E [] row : matrix)
        {
            builder.append('{');
            for (E value : row)
            {
                builder.append(value).append(' ');
            }
            builder.append('}').append(newline);
        }
        builder.append(']');

        return builder.toString();
    }
}
公共类矩阵{
公共静态void main(字符串[]args){
整数[][]x={{1,2,3},{4,5,6},{7,8,9},{0,1,0};
矩阵y=新矩阵(x);
System.out.println(y.getRows());
System.out.println(y.getColumns());
System.out.println(“之前:+y”);
整数[][]值=y.getMatrix();
数值[0][0]=10000;
System.out.println(“之后:+y”);
}
私有E[][]矩阵;
公共矩阵(E[][]矩阵){this.Matrix=Matrix;}
公共E[]getMatrix(){return matrix;}
public int getRows(){return matrix.length;}
public int getColumns(){返回矩阵[0].length;}
公共字符串toString()
{
StringBuilder=新的StringBuilder(1024);
字符串newline=System.getProperty(“line.separator”);
builder.append('[');
对于(E[]行:矩阵)
{
append('{');
对于(E值:行)
{
builder.append(value.append(“”);
}
append('}').append(换行符);
}
builder.append(']');
返回builder.toString();
}
}
编译并在我的机器上运行


您需要考虑其他事项:封装以及“private”何时不是private。查看对代码的修改,看看我如何修改您的“私有”矩阵。

谢谢,我的机器也可以编译和运行。我想在开始学习泛型之前,我应该多读一点泛型的语法,所以对于你接受答案的速度有一个时间限制。我之前试过了,但我得等一会儿才能接受(除非有人提出了一个超级惊人的答案,证明上帝粒子的存在或类似疯狂的事情)谢谢,我的机器也编译并运行了。我想在开始学习泛型之前,我应该多读一点泛型的语法,所以对于你接受答案的速度有一个时间限制。我之前试过了,但是我需要等一段时间才能接受(除非其他人提出了一个超级惊人的答案,证明了上帝粒子的存在或者类似疯狂的东西),这与我在这门课上所做的并不相关。这与我在这门课上所做的并不相关。为什么这是上等票?真正的问题是缺少类型声明的泛型部分。这个答案不中肯,为什么要投票?真正的问题是缺少类型声明的泛型部分。这个答案没有抓住要点。