我正在尝试制作一些测试数据来测试我的代码的某些功能。为此,我需要一个double[][]
。我正在尝试使用一个函数,该函数将double[][]
作为输入参数并将包含测试数据的局部变量复制到其上。但是,我得到一个我不太明白的错误(我确定这是一个非常基本的错误,这就是为什么我无法谷歌它),理解/修复哪些我会感激任何帮助。
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};
作业?
我很困惑,所以我很感激任何帮助
答案 0 :(得分:5)
你想做
data[0] = new[] {1.0, 8.0};
花括号初始值设定项仅在您创建对象/数组时有效。他们不能单独工作。
您可以具体指定类型:
data[0] = new double[] {1.0, 8.0};
但是,如果编译器可以推断出正确的类型(在您的情况下,它可以),那么您不必这样做。
答案 1 :(得分:3)
只需替换:
data[0] = {1.0,8.0};
由:
data[0] = new double[] { 1.0, 8.0 };
编译器必须明确知道要分配给data[0]
的内容。它不会从data[0]
的类型推断它。
答案 2 :(得分:1)
您应该首先初始化您的子阵列。
double[][] data = new double[2][];
data[0] = new double[] {1.0f, 8.0f};