在Java,2D数组声明中键入不匹配错误

时间:2016-11-21 02:11:08

标签: java arrays type-mismatch

public HashMap<String, double[][]> GradientDescent(double[][] ratingData_norm, double[][] ratingData_binary, double[][] theta, double[][] X, int iter, double alpha, double lambda)

    {
        HashMap<String, double[][]> result= new HashMap<String, double[][]>();

        double[][] theta_tran=new *double[theta[0].length][theta.length]();*
        double[][] theta_grad=new *double[theta.length][theta[0].length]();*
-------
---
--
--}

我在声明2D双数组时遇到错误。 键入不匹配错误。无法将double [] [] []转换为double [] [] 任何人都可以告诉我在哪里弄错了以及如何解决它?

非常感谢提前!!!!

1 个答案:

答案 0 :(得分:1)

我修复了你发布的代码,所以我可以尝试编译它。

import java.util.*;

public class Test {

    public HashMap<String, double[][]> GradientDescent(double[][] ratingData_norm, double[][] ratingData_binary, double[][] theta, double[][] X, int iter, double alpha, double lambda)
    {
        HashMap<String, double[][]> result= new HashMap<String, double[][]>();

        double[][] theta_tran=new double[theta[0].length][theta.length]();
        double[][] theta_grad=new double[theta.length][theta[0].length]();
    }

}

然后我编译了它:

> javac -d . Test.java
Test.java:9: error: ';' expected
        double[][] theta_tran=new double[theta[0].length][theta.length]();
                                                                       ^
Test.java:10: error: ';' expected
        double[][] theta_grad=new double[theta.length][theta[0].length]();
                                                                       ^
2 errors

下次你问一个问题时,你应该发布最少量的可以编译的代码,并且可以证明你的问题。

您不应以任何奇怪的方式修改代码以指出问题所在。我们不知道这些星号是否是您代码的实际部分。如果您必须添加内容,请使用注释。

并且您应该包含您收到的错误消息。错误消息非常清楚你做错了什么。

这可以编译:

import java.util.*;

public class Test {

    public HashMap<String, double[][]> GradientDescent(double[][] ratingData_norm, double[][] ratingData_binary, double[][] theta, double[][] X, int iter, double alpha, double lambda)
    {
        HashMap<String, double[][]> result= new HashMap<String, double[][]>();

        // No brackets needed for array instantiation
        double[][] theta_tran=new double[theta[0].length][theta.length];
        double[][] theta_grad=new double[theta.length][theta[0].length];

        return null;
    }

}

这不是你描述的错误。如果您确实存在类型不匹配的问题,那么您发布的代码中就不存在任何类型。