EDIT2:对不起所有......我认为这是由于对问题的理解不足导致了这种误解。阅读之后,我认为他们想要的是getWinningPoint()的返回值是玩家中最大的数字,但仍然<= 21。这样在游戏输出中,可以循环每个玩家再次获得他们的卡点并将其与此获胜点进行比较。我感谢你的所有意见和帮助。主持人或管理员可以关闭此主题。再次感谢。
我想了解如何访问arraylist中的特定对象,以便我可以在其上强制转换方法。在整体视图中,我能够制作适用于玩家arraylist中所有项目的方法(distributeCardsToPlayer)。但是我的getWinningPoints()
的第二种方法是一个int,它总结了arraylist玩家中特定玩家所拥有的所有牌。 winnerPoint是一个单独的结果,最终将用于printWinners()
方法。我只熟悉使用“Player player = players.get(0);
”访问obj,但在这种情况下,“播放器”本身将调用getWinningPoints()
来检查自己的结果。
P.S - 我不确定如何正确使用它,希望有人可以指出我正确的方向。
import java.util.*;
public class ModifiedBlackJack
{
protected ArrayList<Card> gameDeck;
protected ArrayList<Player> players;
public ModifiedBlackJack(ArrayList<Player> players)
{
this.players=players;
}
public void distributeCardsToPlayers()
{
Scanner console = new Scanner(System.in);
for (Player player : players)
{
player.drawACard(getACardFromDeck());
player.drawACard(getACardFromDeck());
System.out.println(player.getName()+": " + player.toString());
System.out.print("Draw another card? (y/n): ");
char input = console.nextLine().toLowerCase().charAt(0);
if(input == 'y')
{
player.drawACard(getACardFromDeck());
}
}
EDIT2:经过阅读后,我认为他们想要的是getWinningPoint()的返回值是玩家中最大的数字,但仍然<= 21。这样在游戏输出中,可以循环每个玩家再次获得他们的卡点并将其与该获胜点进行比较。
public int getWinningPoints()
{
int wp=0;;
int point=0;
for (Player player:players)
{
point = player.getCardsPoints();
if (point>=21 && point>wp)
{
wp=point;
}
}
return wp;
}
在Player类中,有一个用于总结所有卡点的功能
public int getCardsPoints()
{
int point=0;
for (Card c: cards)
{
point=point+c.getPoints();
}
return point;
}
我是java新手,非常感谢任何帮助或指导。 谢谢
答案 0 :(得分:0)
你可能会过度思考这个问题,并且并不完全需要getWinningPoints
方法。
因为已经在getCardsPoints
中声明了Player
,并且您已经有一个Player
的实例可以在循环中使用,所以你唯一的事情就是现实需要做的是......调用它。
System.out.println(player.getName() + "Chips: " + player.getChips() + "[]" + player.getCardsPoints());
您需要满足min
参数的任何条件都应在此循环内完成;也就是说,有条件地打印大于min
的值。
答案 1 :(得分:0)
如果你想调用一个Player类方法,你需要有一个玩家对象来调用它“拥有”的方法。
将玩家对象传递给方法并接受getWinningPoints()中的玩家对象。
拨打强>
getWinningPoints(player)
<强>声明强>
public int getWinningPoints(Player localPlayer)
{
return localPlayer.getCardsPoints();
}