不兼容的类型:int和<nulltype> </nulltype>

时间:2014-05-13 22:29:24

标签: java types null int

我遇到了(hashTable [bucket] [size] == null)的问题。我想知道如果null不是int类型,你如何检查该槽是否为null。任何想法/提示?

public void add(int n){
   int bucket = hashF(n);
   int p=0;
   int size = hashTable[0].length;
  for(int i=0; i>size; i++){
    if(hashTable[bucket][size] == null){
      hashTable[bucket][size]= n;
      break;
    }
    if(i+1 == size){
      bucket++;
      i = -1;
    }
    if(bucket ==10){
      bucket = 0;
    }
    p++;
    if(p== hashTable.length*hashTable[0].length){
      break;
    }
  }
  for(int i=0; i<BST.length; i++){
    if(BST[i] == null){
      BST[i] = n;
      break;
    }
    else if(n<BST[i]){
      i= 2*i;
    }
    else{
        i = 2*i+1;
      }
  }
 }

2 个答案:

答案 0 :(得分:0)

假设hashTable是一个二维的int数组,你无法检查它的一个元素是否为空,因为它永远不会。基元永远不能为空,因为它不是对象引用。它将始终具有值 - 其默认值为0.

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

答案 1 :(得分:0)

Java原语(如int)没有“未分配”值 - 它们总是具有值。

如果要表示“未分配”,请使用“不可能”的大小值,例如在初始化时分配的-1。然后在hashTable[bucket][size] == -1的代码测试中确定它是否处于初始状态。