Java:比较对象的[All] Instance Variables

时间:2016-11-24 12:07:17

标签: java

我有点问题。

我自己和几个朋友昨天玩扑克,但我们没有筹码,所以我决定开始编写一个程序[没有卡片,只是芯片]。

在我的代码中,我在游戏对象中有两个主要变量。

private int id;
private long bank;

我有一个名为 Aside 的不同文件,我可以在其中进行不同的计算。

在下面的代码中,我试图比较所有实例 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

2 个答案:

答案 0 :(得分:1)

你可以使用java-8 Stream API这样的东西

来做到这一点

返回players.stream()。allMatch(p - &gt; p.getBlank()。equals(players.get(0).getBalnk()))

但是,如果您使用while(aside.compareBanks(players))并且列表中的所有元素都具有相等的blank值,那么您的while循环将永远不会停止。它与while(true)相同。因此,在这种情况下,您可能需要使用if(aside.compareBanks(players)),或者在空白值相等的情况下更改它们。

答案 1 :(得分:0)

试试这个

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

bankValue + = player.getBank(); }

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

return true;}

else return false;