2017-02-24 3 views
-1

私は短いプログラムを書いていますが、問題があります。JAVA ArrayList can not find element from indexOf()

State before fail

詳細に問題があります。

私はこの例の機能

public CardStck from(Card card) 
int pos = this.cardList.indexOf(card); 

カードがカード(値= 5、色=「D」)である - Uはデバッグ画面 に表示されるようであっても(カードIM 5を探していることがありますD)(ダイヤモンド5カード)posの値が-1(見つからない)

問題がどこにあるのか教えていただけますか?あなたのカードのクラスで

+2

'equals()'を実装しましたか? – shmosel

+0

あなたのhashCodeとequalsメソッドをオーバーライドして、indexofメソッドがそれに応じて選択されるように等価をチェックする必要があります –

+0

'Card'クラスの' equals/hasCode'メソッドをオーバーライドしましたか? –

答えて

0

、このような方法で、「等しい」を実装:必ず色を作ることなどnullでないように、他のいくつかのヌルチェックや含めたい安全のものがあるかもしれません

@Override 
public boolean equals(Object t){ 
    if(!(t instanceof Card)){ 
     return false; 
    } 
    Card c = (Card)t; 
    //Compare however you want, ie 
    return (c.getValue() == this.getValue()) & (c.getColor().equals(this.getColor()); 
} 

をそれは一般的な考えです。

+0

それは動作します、ありがとう! – John

+0

'equals()'は、オブジェクトが別の型である場合には例外をスローしません。 – shmosel

+0

私は一般的な解決策を提供していました。彼はタイプチェックなどをしたい場合、彼はすることができます。投票する必要はありません。私はそれが完全な例ではないことを明示した。 –