2016-10-20 3 views
-4

絶対値に基づいてソートするコンパレータを実装しています。すべての私は、このコードの一行である必要があります(だと思う):Math.abs(整数)が機能しない、整数をintに変換できません

public int compare(Integer int1, Integer int2) { 
    return Math.abs(int1).compareTo(Math.abs(int2)); 
} 

エラー:私はJavaはIntegerオブジェクトをintにunboxesと考え

'no suitable method found for abs(Integer) '?

私はint値を.intValue()を使って2つのIntegerオブジェクトから引き抜こうとしましたが、どちらも機能しませんでした。私は間違って何をしていますか?あなたはそれを引数として渡す場合

+6

を(あなたの質問のバージョンによって異なります)されている '返しInteger.compare(Math.abs(INT1) 、Math.abs(int2)); ' –

+3

' Math#abs'の戻り値の型は何ですか? –

+0

コードを少し分解すると、問題が明らかになります。ヒント: 'Math.abs(anIntegerObject)'は問題なく動作します。 – Taylor

答えて

7

Math#abs(int)は確かにVHS版Integerintになりますが、それはどんなメソッドを持っていないので、あなたがチェーン.compareToにすることはできませんので、それは、プリミティブ型であるintとして結果を返します。それ。

おそらく

Integer.compare(Math.abs(int1), int2); 

ような何かを探しているか、あなたはしたくない

Integer.compare(Math.abs(int1), Math.abs(int2)); 
関連する問題