java - 配对游戏-setCard方法

标签 java arraylist

尝试创建一个接受“数字”的方法,然后使用该数字,它会进入全局 arraylist <string>并使用一系列 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;
        }
}

最佳答案

为所有实例创建继承树。

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());

假设你想迭代它:

for(Card card : cardList) {
    System.out.println(card.getIcon());
}

这将打印:

 Icon A
 Icon B

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

关于java - 配对游戏-setCard方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26060471/

相关文章:

java - 无法合并Dex

java - ubuntu 14.04 上没有默认的 JAVA_HOME

java - 使用扫描仪将大文件读入内存时内存不足

java - 将对象序列化到 dat 文件中

java - 每两个星期一/星期五生成 Quartz Cron 表达式

java - 将 ArrayList 限制为仅包含 DISTINCT 条目时,哪种方法成本更高?

java - 为什么没有在正确的行上报告 NPE

java - 将字符串转换为数组 List Java

java - 方法从 ArrayList 返回字符串列表

java - HashMap<String, ArrayList>,根据 Key 为 ArrayList 添加新值