Java相当于C#Array.Copy

时间:2012-03-09 19:46:01

标签: java arrays type-conversion

以下代码适用于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中运行?

3 个答案:

答案 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可以投放到doublefloat[]可以投放到double[]

答案 1 :(得分:2)

因为在Java中doublefloat不是一回事并具有不同的精度。 (见: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