2016-11-24 5 views
0

少し問題があります。Java:オブジェクトの[すべて]インスタンス変数の比較

私は昨日ポーカーをしていましたが、私たちはチップを持っていなかったので、[カードなし、チップだけ]のプログラムを書くことに決めました。

私のコードでは、ゲームオブジェクトに2つの主な変数があります。

private int id; 
private long bank; 

私は別のファイルを持っているが、私は別の計算を行うことが可能な別にと呼ばれます。コードで

私はこの場合、[すべての銀行がマッチしたかどうかを確認するために、すべてのインスタンスに銀行変数を比較しようとしています下のこの新しいカードを引くことができることを意味しますが、そうでない場合は、ユーザーがいずれかに保つ調達する必要がありますか倍]。

が容易用語でこれを書いている方法はあります:

package poker; 
import java.util.ArrayList; 

public class Aside 
{ 

    public boolean compareBanks(ArrayList<Game> x) 
    { 
     ArrayList<Game> players = new ArrayList(x); 

     if(players.get(0).getBank() == players.get(1).getBank() && players.get(0).getBank() == players.get(2).getBank() 
      && players.get(1).getBank() == players.get(2).getBank()) 
     { 
      return true; 
     } 
     return false; 
    } 
} 

後、私はここに、この使用:

while(aside.compareBanks(players)) 

をしかし、ループがいっています。

私はかなりプログラミングの中間ですので、間違いで私に簡単に行きます。

ありがとうございます。

P.S:これはコードダンプではありません。

while(aside.compareBanks(players)) 
     { 

      for(Game x : players) 
      { 
       if(x.hasPayedBid() == true) 
        { 

        System.out.println("Player : " + x.getName() + " [Call, Raise, Fold]:"); 
        action = in.nextLine(); 
        if(action.equalsIgnoreCase("call")) 
        { 
         break; 
        }else if(action.equalsIgnoreCase("raise")) 
        { 
         System.out.println("How much are you raising? $"); 
         int raise = in.nextInt(); 

         table += raise; 

         x.raise(raise); 
        }else 
        { 
         x.fold(); 
        } 
       } 
      } 

      in.nextLine(); 

      for(Game x : players) 
      { 
       System.out.println(x.toString() + "\n"); 
      } 

     }//End While 
+0

[ジャワ:等号と==]の可能な重複(http://stackoverflow.com/questions/11378309/java-equals-and) –

+0

'=='の代わりに '.eqials()'メソッド(これは実装する必要があります)を比較してください。 –

+1

銀行は長い文字列ではありません。 * .equals()*を長く使うことはできないと思います。 – ThatHashCodeGuy

答えて

1

あなたはこの

リターンplayers.stream()allMatch(Pのようなjava-8 Stream APIなものを使用してそれを行うことができます - 。。> p.getBlank()のequals(players.get(0).getBalnk() ))

ただし、while(aside.compareBanks(players))を使用し、リストのすべての要素の値がblankの場合、whileループは停止しません。 while(true)と同じです。したがって、この場合はおそらくif(aside.compareBanks(players))を使用する必要があります。または、空白の値が等しい場合は値を変更します。

0

試しこの

long bankValue=0; 
For(Game player: players){ 

bankValue + = player.getBank()。 }

if(bankValue==(players.get(0).getBank()*players.size)){ 

真リターン;}

else return false; 
+0

if文が何をしているか説明してください。私のためのロジックはちょっと絡み合っているようです。 – ThatHashCodeGuy

+0

私たちは、すべてのプレーヤーの合計を検証しています。bankは、プレーヤーが最初のプレーヤーの銀行の値を乗じた数に等しいです。 – snofty

+0

ああそれは興味深いと思うよ。 プレーヤー1銀行:$ 47 プレーヤー1銀行:$ 53 プレーヤー1銀行:$ 50 この合計額はまだ$ 150になります – ThatHashCodeGuy

関連する問題