3

我正在尝试制作一些测试数据来测试我的代码的某些功能。为此,我需要一个double[][]. 我正在尝试使用一个将 adouble[][]作为输入参数并将包含测试数据的局部变量复制到其上的函数。但是,我收到一个我不太理解的错误(我确信这是一个非常基本的错误,这就是为什么我无法使用谷歌搜索它),理解/修复我将不胜感激。

private void makeData(double[][] patterns)
{
    double[][] data = new double[2][];
    // exists so that I can change `data` easily, without having to change the core functionality of copying it over to `patterns`
    data[0] = {1.0,8.0}; // error!
    // copy over everything from data into patterns
}

上面代码中标记的行给了我错误Only assignment, call, increment, decrement, and new objects can be used as a statement。对此,我的反应是“不是data[0] = {1.0,8.0};作业吗?

我很困惑,所以我很感激任何帮助

4

3 回答 3

5

你想做

data[0] = new[] {1.0, 8.0};

花括号初始值设定项仅在您创建对象/数组时有效。他们不自己工作。

您可以具体指定类型:

data[0] = new double[] {1.0, 8.0};

但是,如果编译器可以推断出正确的类型(在您的情况下,它可以),您不必这样做。

于 2013-07-22T14:25:17.390 回答
3

只需更换:

data[0] = {1.0,8.0};

经过:

data[0] = new double[] { 1.0, 8.0 };

编译器必须明确知道要分配给data[0]. 它不会从data[0].

于 2013-07-22T14:25:38.647 回答
1

您应该首先初始化您的子数组。

double[][] data = new double[2][];
data[0] = new double[] {1.0f, 8.0f};
于 2013-07-22T14:27:21.160 回答