Java 匹配博弈-集卡法

Java 匹配博弈-集卡法,java,arraylist,Java,Arraylist,尝试创建一个方法,该方法接受一个“数字”,然后使用该数字,它进入一个全局arraylist,并使用一系列if-else语句将位置“number”的图标更改为某个图标 问题是我不知道怎么去拜访那个地方 如果没有方法,我会这样编码 card1.seticon(a); 我会对所有if-else语句和arraylist中的所有项手动执行此操作 如何使其动态化,使“卡片”后面的数字以相同的方式不断变化 到目前为止,这是我的方法&我想用一个变量或一些动态的东西来替换这些方法: public void s

尝试创建一个方法,该方法接受一个“数字”,然后使用该数字,它进入一个全局
arraylist
,并使用一系列if-else语句将位置“number”的图标更改为某个图标

问题是我不知道怎么去拜访那个地方

如果没有方法,我会这样编码

card1.seticon(a);
我会对所有if-else语句和
arraylist
中的所有项手动执行此操作

如何使其动态化,使“卡片”后面的数字以相同的方式不断变化

到目前为止,这是我的方法&我想用一个变量或一些动态的东西来替换这些方法:

 public void setCards(int cardNumber) { 
        String temp = cards.get(cardNumber);
        switch (temp) {
            case "0":
                card1.setIcon(a);
                break;
            case "1":
                Card1.setIcon(b);
                break;
            case "2":
                Card1.setIcon(c);
                break;
            case "3":
                Card1.setIcon(d);
                break;
            case "4":
                Card1.setIcon(e);
                break;
            case "5":
                Card1.setIcon(f);
                break;
            case "6":
                Card1.setIcon(g);
                break;
                case "7":
                Card1.setIcon(h);
                break;
        }
}
构建一个
映射
,键是
“0”、“1”…“7”、“任意”
,值是
图标a、b、c…h…任意图标

然后您只需
card1.setIcon(map.get(cards.get(cardNumber)))


(上一行中省略了验证。)

为所有实例创建一个继承树

abstract class Card {
    protected String icon;

    public Card(String icon) {
         this.icon = icon;
    }

    public String getIcon() {
         return this.icon;
    }
}
下面是子类的一个示例:

class CardA extends Card {
   public CardA() {
        super("Icon A");
   }
}
用你所有的牌做类似的事情。之后,您可以执行以下操作:

List<Card> cardList = new ArrayList<Card>();
cardList.add(new CardA());
cardList.add(new CardB());
将打印:

 Icon A
 Icon B

如您所见,通过此过程,您可以创建和添加任何子类,而不必修改以前创建的类。

千万不要这样做。首先,永远不要忘记switch case语句。使用
映射
或任何其他适用的多态形式。此外,全球性是根本的邪恶。也忘掉它们吧。在这里,我并不100%清楚你的意图是什么。虽然它们并不适合完全的初学者,但我强烈推荐你两本读物:“#1”这本书会给你很多关于如何解决问题的提示,比如你的问题“我如何使它充满活力以便……”。考虑到“尝试创建一个接受“数字”的方法,然后使用该数字,…(!!!)将位置“数字”的图标更改为某个图标”,您可以使用
地图
,然后发布
cards.get(id).setIcon(icons.get(id))
,完全省略“cardNumber”部分,因为您可能不需要它。但是,我不确定你的目标。。。附言:!!!=不要将实现细节放在需求中。描述要做什么,而不是如何做。为什么要为所有具有相同行为的卡创建子类?没有
abstract
关键字的
Card
类似乎是合适的,尽管如果图标要根据某种逻辑进行更改,也应该引入setter方法。我认为图标不是唯一的区别。不同类型的卡片也可能有不同的行为(我知道作者没有提到这一点)。通过这种方法,@sdx可以轻松地以政治化的方式实现其他事情。当然,如果图标只是不同的属性,那么地图将是更好的选择。我明白了。我的假设正好相反:即使图标不是唯一的区别,但卡片之间的区别只体现在数据上,它们共享相同的功能。但实际上我不知道OP的问题的背景是什么。。。
 Icon A
 Icon B