两次声明相同的变量

时间:2017-10-31 12:50:13

标签: java

我正在制作文字冒险游戏,我有一种方法可以在游戏中的某些房间添加物品。我两次意外地宣布同样的方法。

 ArrayList<Item> items = player.getCurrentposition().getItems();
        if(items.size() > 0)
        {

            for (Item item : player.getCurrentposition().getItems()) 
            {}
            io.put("\n\nYou've stumbled upon an item! Do you want to pick it up?\nInput 0 if room contains 1 item, "
                    + "and if the room contains 2 items input either 0 or 1, depending on which you wish to pick up" + player.getCurrentposition().getItems());
 //the first method used to loop through the found items, int pickUp = io.getInteger(0, player.getCurrentposition().getItems().size());

            player.getInv().add(player.getCurrentposition().getItems().get(pickUp));
            System.out.println("You picked up the following item(s): " + player.getCurrentposition().getItems());
            ArrayList<Item> it = player.getCurrentposition().getItems();
            for (Item object : it) 
            {
                player.addToInv(object);
                if(object instanceof Weapon)
                {
                    ((Weapon)object).addToPlayerDamage(player);
                }
                else if(object instanceof Potion)
                {
                    ((Potion)object).applyPotion(player);
                }
            }
            //System.out.println(player.getInv().size()); <-- used to check
            player.getCurrentposition().getItems().remove(pickUp);              

            io.put("here is some stuff..:\n");

            for (Item item : items) 
            {
                io.put(item.getName()+"\n");
            io.put("\n\nYou've stumbled upon an item! Do you want to pick it up?\nInput 0 if room contains 1 item, "
                   + "and if the room contains 2 items input either 0 or 1, depending on which you wish to pick up" + player.getCurrentposition().getItems());

            }
            ArrayList<String> options = new ArrayList();
            options.add("Nothing");

            for (int i = 0; i < items.size(); i++) {
                options.add(i+1+ ": " + items.get(i).getName());
            }
            options.add("All");

            int pickUp = io.select("Here are the options you can chose from  +", options, "");
//here is the second int pickUp, which is used to select the items, that the        user wants and add them to the users inventory. 
            if(pickUp == 0){
                //nothing
            } else if(pickUp == options.size()-1){
                //all
            } else {
                player.getInv().add(player.getCurrentposition().getItems().get(pickUp - 1));
                player.getCurrentposition().getItems().remove(pickUp - 1);
            } 
        }

int pickUp被声明两次,但我不知道我是否可以将pickUp重命名为其他内容。我第一次宣布pickUp是为了让玩家拿起一个项目,第二次我会让olayer选择是否要收集该项目。

我可以将第二个int PickUp重命名为其他内容,例如choosePickUp,并且在没有错误的情况下具有相同的结果。

1 个答案:

答案 0 :(得分:0)

它们都是Integer类型。为什么不尝试在第二次使用它时不将其声明为整数。除非您存储初始值并在需要时同时重新计算新值。

第二个选项是如果你需要两个,那么重命名第二个变量不应该影响太多。第一个变量似乎取项目及其大小;第二个为您提供选项并存储它。我没有看到基于这段代码重命名第二个变量的问题。如果您确实重命名,则确保以下if语句也被更改。

编辑: 是的,当你再次阅读你的代码时,我认为你应该重命名你的第二个变量并称之为pickupItem。我假设0表示他忽略了该项目,第二个如果声明我不知道,第三个if语句他拿起物品并将其分配到库存中。如果你可以清理第二个if语句的内容,那么我可以帮助更多。