以下代码适用于C#:
public void DoSomething(float[][] array){
for (int i = 0; i < array.GetLength(0); i++)
{
int len = array[0].length;
double[] copy = new double[len];
Array.Copy(array[i], copy, len);
...
}
}
我正在尝试将其转换为Java。我试过这个:
public void DoSomething(float[][] array){
for (int i = 0; i < array[0].length; i++)
{
int len = array[0].length;
double[] copy = new double[len];
copy = Arrays.copyOf(array[i], len);
...
}
}
但我收到错误消息:
类型不匹配:无法从float []转换为double []
如何才能使其在Java中运行?
答案 0 :(得分:2)
您正尝试将float
数组分配给double
数组。试试这个:
public void DoSomething(float[][] array) {
for (int i = 0; i < array[0].length; i++) {
int len = array[0].length;
float[] copy = new float[len]; // note change of array type
copy = Arrays.copyOf(array[i], len);
我不能代表C#,但java是强类型语言,这意味着你不能做你所尝试的事情。在java中,float
可以投放到double
,float[]
可以不投放到double[]
。
答案 1 :(得分:2)
因为在Java中double
和float
不是一回事并具有不同的精度。 (见:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html)
编辑以添加:至于如何使其工作,您需要手动将每个元素投射到double
。但是,您可能会遇到精确问题;见:Convert float to double without losing precision
答案 2 :(得分:0)
使用
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
将数组的整个部分复制到另一个数组的方法。 (JavaDocs)