如何实现具有两个循环的条件

时间:2011-11-22 17:21:59

标签: java

public void PlayforMe()
{
    for (int i=game.size()-1;i>=1;i--)
    {
        Card a = game.get(i);
        Card b = game.get(i-1);
        if (a.getSuit().equals(b.getSuit()) | (a.getCardNum().equals(b.getCardNum())))
        {
            game.remove(b);
            break;
        }
    }

    for (int j=game.size()-1;j>=3;j--)
    {
        Card c = game.get(j);
        Card d = game.get(j-3);
        if (c.getSuit().equals(d.getSuit()) | (c.getCardNum().equals(d.getCardNum())))
        {
            game.set(j-3,game.get(j));
            game.remove(j);
            break;
        }
    }
}

我已经用Java代码编写了一个单人游戏类型的Java代码。我对语言(以及一般的编程)非常陌生。我的牌组有一个arrayList,我的'游戏'有一个arrayList。在这个方法/移动我有它所以它会找到最接近已发牌的卡的卡,如果套装或卡号是相同的,则直接与卡“交换”它。

如果这个动作不是发牌的选项,那么我需要它通过第二个循环,找到最接近发牌的结尾的牌,然后用卡[3]将其“交换”到它之前如果套装或卡号相同。

他们单独工作,但我不能让条件工作(例如我尝试了if语句)将通过第一个循环,如果它没有成功删除卡,它将通过第二个循环。

该方法应该只执行一次移动,如果满足条件,则优先考虑将卡移动到下一个(之前)卡上。我可以做到这一点它将通过两个循环(即将代码片段放入两个方法并从我的菜单中调用它们)但我需要它来做第一个循环而只做第二个如果第一个循环结果不成功(即卡片b未被移除/ game.remove(b);未被调用。)

如果有人有任何建议我会很感激:)

2 个答案:

答案 0 :(得分:0)

您希望将Boolean finished = false;放在函数的开头,然后在完成后放置finished = true。然后将if (finished) { ... }围绕你的第二个循环。

或者在完成后在第一个循环中放置return。这将返回您的函数并不再执行代码行。虽然有些人认为这种不好的风格。

答案 1 :(得分:0)

如果第一个for循环成功,return而不是break