2016-11-29 12 views
1

は私がある以下のコード、コンパイル時にエラーを受け取った:行10Leetcode220エラー:比類のないタイプ:int型と<null>

public class Solution { 
public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) { 
    if (nums == null || k <= 0 || t < 0 || nums.length < 2) return false; 

    TreeSet<Integer> set = new TreeSet<>(); 
    for (int i = 0; i < nums.length; i++) { 
     int floor = set.floor(nums[i] + t);//return largest number smaller than nums[i] + t or null 
     int ceil = set.ceiling(nums[i] - t);//return least number larger than num[i] - t or null 

     if ((floor != null && floor >= nums[i]) || (ceil != null && ceil <= nums[i])) { 
      return true; 
     } 

     set.add(nums[i]); 

     if (set.size() > k) { 
      set.remove(nums[i - k]); 
     } 
    } 

    return false; 
}} 

の「比類のないタイプのint型をし、」私はTreeSetの前に、最終的なキーワードを追加した場合、床と天井、コードは正常にコンパイルされます。誰でも私が何が起こっているのかを教えてくれるの?ありがとう。

... 
final TreeSet<Integer> set = new TreeSet<>(); 
for (int i = 0; i < nums.length; i++) { 
    final Integer floor = set.floor(nums[i] + t);//return largest number smaller than nums[i] + t or null 
    final Integer ceil = set.ceiling(nums[i] - t);//return least number larger than num[i] - t or null 
... 

答えて

3

int floor基本intタイプとしてfloor定義します。 Integer floorは、floorを非自明であると定義し、classタイプです。 nullは、軽微な型でのみ使用されます

0

キーワードはfinalとは関係ありません(これはとにかく動作します)。プリミティブ値(int)とnullを比較することはできません。代わりに、対応するオブジェクト(Integer)を使用する必要があります。

関連する問題