2013-05-31 37 views
2
Arrays.sort(copied, new Comparator<float[]>(){ 
    @Override 
    public int compare(float[] o1, float[] o2) { 
     // TODO Auto-generated method stub 
     return o2[7].compareTo(o1[7]); 
    } 
}); 

复制的阵列是利用看起来像这样排序由第二维度的值的二维浮arrray

[10.0, 34.34, 34.42, 34.1, 34.35, 5244700.0, 34.35, 0.0, 0.0, 0.0][10.0, 34.34, 34.42, 34.1, 34.35, 5244700.0, 34.35, 0.1, 0.0, 0.0 ].......

但不知何故编译错误返回管线:

Cannot invoke compareTo(float) on the primitive type float 

请帮助

+0

我认为你需要明确地将该值作为浮动对象 - 任何人都可以证实这一点? – Katana24

+1

您不能在float上调用compareTo,因为它们是原始数据类型。尝试使用正常比较(<>!=等)或使用Float(如在包装类中)compareTo方法。 – Smallhacker

回答

4
return Float.compare(o2[7],o1[7]); 
0

您正在使用原始语言,您试图通过尝试对其调用方法来解除引用。注意到原语不是类,因此没有方法。因此,错误不能invoke

你的方法的签名更改为

public int compare(Float[] o1, Float[] o2) { 
    // TODO Auto-generated method stub 
    return o2[7].compareTo(o1[7]); 
} 

,这将给你访问.compare功能

记住要通过Float[]。显然Java不autobox阵列