如何在arraylist上使用特定对象的方法

时间:2017-03-25 04:34:48

标签: java arraylist

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新手,非常感谢任何帮助或指导。 谢谢

2 个答案:

答案 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();
}