我有点问题。
我自己和几个朋友昨天玩扑克,但我们没有筹码,所以我决定开始编写一个程序[没有卡片,只是芯片]。
在我的代码中,我在游戏对象中有两个主要变量。
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
答案 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;