Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法减少if/else语句的数量,使我的代码更高效?_Java_If Statement - Fatal编程技术网

Java 有没有办法减少if/else语句的数量,使我的代码更高效?

Java 有没有办法减少if/else语句的数量,使我的代码更高效?,java,if-statement,Java,If Statement,我目前正在用Java制作一个小游戏,你可以从一个简单的粘贴图形(我在Photoshop中画的)开始,然后你可以用硬币购买物品 现在你可以购买3件物品:剑、盔甲和头盔 如果您用剑单击复选框并按下购买按钮,ImageView中的图像基本上将更改为另一个图像(我刚刚在Photoshop中的原始stickman上创建了一个新层,他手持剑) 我意识到,我在游戏中添加的物品越多,物品组合的可能性就越大,我最终会有太多的if/else语句。在伪代码中,如果我继续做我到目前为止一直在做的事情,它看起来是这样的:

我目前正在用Java制作一个小游戏,你可以从一个简单的粘贴图形(我在Photoshop中画的)开始,然后你可以用硬币购买物品

现在你可以购买3件物品:剑、盔甲和头盔

如果您用剑单击复选框并按下购买按钮,ImageView中的图像基本上将更改为另一个图像(我刚刚在Photoshop中的原始stickman上创建了一个新层,他手持剑)

我意识到,我在游戏中添加的物品越多,物品组合的可能性就越大,我最终会有太多的if/else语句。在伪代码中,如果我继续做我到目前为止一直在做的事情,它看起来是这样的:

    private void loadOwnedItems(){
   String itemsInDB = readFromDB.getItems(SingletonDataValues.getInstance().getId());

   if(itemsInDB.equals("Sword, ")) {
       //insert pic of guy with sword
   }
   else if(itemsInDB.equals("Sword, armor, ")){
       //insert pic of guy with sword and armor
   }
   else if(itemsInDB.equals("Sword, armor, helmet, ")) {
       //pics of guy w/ sword, armor, helmet
   }
   else if(itemsInDB.equals("Armor, ")) {
       //insert pic of armor
   }
   else if(itemsInDB.equals("Armor, helmet, ")) {
       //armor + helmet
   }//and so on...
有可能用户会购买一把剑+头盔,或者只是一把头盔+盔甲,盔甲+剑,因此如果我在游戏中添加更多物品,可能性会变得太大


有没有更好的办法,那我该怎么做呢?

我不确定你是怎么做的,但是一个广泛的想法是将所有购买的东西作为单独的对象,每次玩家购买东西时,你都将单个对象添加到场景中,而不是重新绘制整个场景。

几句话:1)这个问题可能会更好。2) 将显然是
集合的东西作为
字符串处理似乎很奇怪。使用适当的数据结构肯定会有所帮助。3) 如果你将来扩展你的游戏,它可能会有帮助,你可以在一个基本角色图像上应用装备遮罩。我会切换到一个系统,该系统接收变量
itemsInDB
中的每个
项目,并单独处理项目,例如将其绘制到屏幕上。你正处在一个危险的斜坡上组合,而这不是一条你为了自己的理智而想走的路。很多人将此标记为重复,但我在标记为重复的线程中找不到答案。我不擅长解释,但这个答案实际上为我解决了这个问题。非常感谢。