2013-05-31 84 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陣列