如何在该项目中使用枚举?

恶魔

我整个上午都在看有关枚举的教程和文章,而我只是想尽一切办法来帮助他们。

这是我目前的问题:

我正在编写一个程序来帮助管理玩家在视频游戏中收集的物品。玩家拥有的空间数量有限。每个角色只有88个插槽。玩家收集的物品大小不同。

有九种类型的项目:

靴子(总是4号)

皮带(总是大小2)

头盔(总是4号)

戒指(尺寸始终为1)

护身符(总是大小1)

手套(总是4号)

防弹衣(总是6号)

武器(可以在2到8号之间)

盾牌(尺寸介于4到8之间)

要确定给定武器或盾牌的大小,请使用一张表格,上面列出所有不同的名称和大小。例如,名称Kite Shield的大小为6。所有这些数据都存储在HashTable中,名称是键,而占用的空间量是值。试想一下这张表已经在我的程序中了。HashTable接受一个字符串名称(例如“ Long Bow”,对应的值为8),并返回一个整数大小值。

public class Item
{
    /** Name is the first part of the item. Ex. Long Bow */
    private String name;

    /**
     * Defines what an item object is.
     * @param name of item.
     */
    public Item(String name)
    {
        this.name = name;
    }

    public int getItemSize()
    {
        // TODO: Algorithm here using Enums to determine size of a given item.
    }

    public String getName()
    {
        return name;
    }
}

这是我对项目类型进行的枚举,但我看不出这对您有什么帮助。

// This is where I need help ↓
public enum types
{
    HELM, AMULET, WEAPON, BODY_ARMOR, SHIELD, RING, GLOVES, BELT, BOOTS;

    // How do I use this enum to help me determine size?
}

我如何在这里使用枚举以避免使用Strings和String.equals()?谢谢!

拉加夫·沙玛(Raghav Sharma)

您可以在您的Enum中存储大小项目。对于武器和盾牌之类的项目,您已经有了HashMap,因此我们将其保留为枚举。

如果size的值为0(对于WEAPON就是这种情况),我们使用HashMap。

public enum ItemType {
    HELM(4),
    AMULET(1),
    WEAPON(),
    BODY_ARMOR(6);

    private int itemSize;

    ItemType() {

    }

    ItemType(int itemSize) {
        this.itemSize = itemSize;
    }

    public int getItemSize() {
        return itemSize;
    }
}

现在,您可以在Item类中实现它。

public class Item
{
    /** Name is the first part of the item. Ex. Long Bow */
    private String name;

    private ItemType type;
    /**
     * Defines what an item object is.
     * @param name of item.
     */
    public Item(ItemType type, String name)
    {
        this.type = type;
        this.name = name;
    }

    public int getItemSize()
    {
        int size = type.getItemSize();
        if (size == 0)
            size = Constants.HASH_MAP.get(name);
        return size;
    }

    public String getName()
    {
        return name;
    }

    public ItemType getType() {
        return type;
    }
}

这样创建您的Item类

Item longBow = new Item(ItemType.WEAPON, "Long Bow");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在项目中使用Printf

来自分类Dev

如何在不同的java项目中使用java项目?

来自分类Dev

在Swift项目中使用Objective-C代码,该项目同时使用Swift代码

来自分类Dev

如何在Android库项目中使用匕首

来自分类Dev

如何在许多连接的项目中使用Docker

来自分类Dev

如何在Elixir项目中使用开源Erlang库?

来自分类Dev

如何在Java项目中使用Java git

来自分类Dev

如何在C#项目中使用LIB文件?

来自分类Dev

如何在插件自己的项目中使用SBT插件?

来自分类Dev

如何在Java项目中使用Java EE API?

来自分类Dev

如何在Grails项目中使用Findall(closure)

来自分类Dev

如何在项目中使用本地jar?

来自分类Dev

如何在本地项目中使用jsdoc

来自分类Dev

如何在Xamarin.iOS项目中使用AutoMapper?

来自分类Dev

如何在Qt项目中使用Android NDK?

来自分类Dev

如何在不同项目中使用MvvmLight SimpleIoc

来自分类Dev

如何在PHP项目中使用grunt-usemin?

来自分类Dev

如何在项目中使用多个if条件

来自分类Dev

如何在MVC.NET项目中使用EmguCV

来自分类Dev

如何在Swift项目中使用TPKeyboardAvoiding?

来自分类Dev

如何在Web项目中使用Spark mllib

来自分类Dev

如何在Android中使用库项目中的布局文件

来自分类Dev

如何在Android Studio项目中使用最新的FFMPEG?

来自分类Dev

如何在Android项目中使用@WorkerThread批注?

来自分类Dev

如何在Swift项目中使用Superpowered lib

来自分类Dev

如何在Swift项目中使用ECSlidingViewController

来自分类Dev

如何在IBM MobileFirst项目中使用SASS?

来自分类Dev

如何在UWP项目中使用预先设计的SQLite?

来自分类Dev

如何在Django项目中使用memcached?

Related 相关文章

热门标签

归档