2017-02-08 11 views
0

申し訳ありませんが、私は愚かな質問をすると、Javaで長時間練習しません...... ハッシュテーブルをシミュレートするコードを書きました。 は、ここに私のコードの機能の一つである:別の場所にあるJavaのデッドコード

protected int find(K key){ 
    int avail=-1; 
    int i=hashValue(key); 
    int j=i; 
    do{ 
     Entry<K, V> element = bucket[i]; 

     if(element==null){ 
      if(avail<0){ 
       avail=i; 
      } 
      break; 
     } 

     if(key.equals(element.getK())){ 
      return i; // found 
     } 

     if(element==this.used){ 
      if(avail<0){ 
       avail=i; 
      } 
     } 
     i=(i+1)%capa; 
    }while(i!=j); 
    return -(avail+1); // return a hash address 
} 

奇妙なことは、ある私は戻ってif文の場合(要素== null)の(どこかが、構造の冒頭)を少し変更したときに、それを私はそれがデッドコードであると私に警告します:

protected int find(K key){ 
    int avail=-1; 
    int i=hashValue(key); 
    int j=i; 
    do{ 
     Entry<K, V> element = bucket[i]; 

     if(key.equals(element.getK())){ 
      return i; // found 
     } 

     if(element==this.used){ 
      if(avail<0){ 
       avail=i; 
      } 
     } 

     // dead code then 
     if(element==null){ 
      if(avail<0){ 
       avail=i; 
      } 
      break; 
     } 
     //dead code then 

     i=(i+1)%capa; 
    }while(i!=j); 
    return -(avail+1); // return a hash address 
} 

誰かが間違っていることを知っていますか?あなたは上記の行でそれを既に参照しているので、あなたの2番目のコード例では

+0

アーウィンの答えはスポットオンですが、デッドコードのフィードバックを与えてくれるものは何ですか? –

答えて

8

elementはおそらくnullすることはできません:行でelement.getK()

if(key.equals(element.getK())) 

それはその時点でnullだった場合、その後、あなたが持っているでしょうあなたが捕まえなかったNullPointerExceptionを得ました。そして、その方法はあなたのif(element == null)ステートメントに続いていないことを意味します。

elementないnullであれば、あなたのif文の本体は、どちらか実行されません。

+0

ありがとうございます。そうだろう。私は行って、いくつかのデータを最初にテストする必要があります。アラームが発生し、私はそれを知ります...... –

関連する問題