【问题标题】:How do I store information in a method so I can use it in a different method later?如何在方法中存储信息,以便以后可以在不同的方法中使用它?
【发布时间】:2018-01-14 18:09:27
【问题描述】:

我对 Java 很陌生,如果这很愚蠢、很明显或措辞不当,我深表歉意。我真的知道的还不够多,无法知道我不知道的东西。

所以我决定,既然我必须学习 Java,我就先跳起来,试着在我去的时候弄清楚。到目前为止,它工作得很好。我正在尝试通过编写一些小程序来强化我已经知道的一些基本概念。

我决定写一个基于文本的小冒险游戏,到目前为止它运行良好。我正在使用扫描器和开关来调用使用扫描器和开关来调用其他方法的方法。一切正常。

到目前为止,它是一条非常线性的直线,就像一本古老的选择你自己的冒险书。但是,我想添加一个玩家库存。我对如何做到这一点有一个非常模糊的想法,但我对我想要它做什么有一个非常明确的想法。

所以,基本上我想存储一条信息,说明玩家有一个特定的项目。我希望能够一次测试多个项目的存在。而且我希望能够在游戏中的任何时候告诉玩家他有什么物品。

我真的不知道如何更好地提出这个问题。

我最好的猜测是做类似的事情

int key, potion;
key = 0
potion = 2

然后测试每一个的值

if (key = 0) {
System.out.println("you don't have the key ");
}
if (key > 0) {
System.out.prinln("You unlock the door");
}

我将每个新房间都作为一个单独的方法,所以整个游戏只是一个大的方法链。所以我希望关于物品的信息可以存储在一个单独的方法中,我可以通过开关或玩家所在的当前房间方法中的 if/else 访问。所以,玩家正在解锁房间 2 中的一扇门,这是它的自己的方法,他拿起了room1里的key,就是自己的方法,key在inventory方法中以整数形式存储。但是密钥是一种用途,因此密钥整数设置为 0,方法 room3 开始。如果这有任何意义。

再次,对不起,如果这真的是愚蠢的基本内容。我对编程很陌生。

【问题讨论】:

  • 你想要的叫做“实例变量”。
  • Java 是面向对象的编程。您尝试使用方法做什么,请尝试使用类和对象。可能是房间类,它将存储密钥和位置并为不同的房间创建对象。我没有理解你的问题或游戏,但尝试从类和对象而不是方法来看待它。
  • 抱歉 - 但请理解,这不是编程学校,它教你的东西你可以在任何一本不错的 Java 书籍的第 2 页上找到。您应该在此处发布问题之前进行认真的研究。您要搜索的术语是“实例变量”——也称为类的字段。

标签: java methods switch-statement


【解决方案1】:

没问题,我为你选择学习编程而鼓掌。这是基本的数据结构。如果您想保存一个值,在大多数编程语言中,您将拥有一个数组。我认为打破你的逻辑是一个好主意,即(存储一个项目,测试> 1,列出项目)。第一步是让它尽可能简单,而不是稍后通过重构添加 getter/setter。最终,您的目标是首先使最基本的代码工作(像这样),而不是重构为具有 getter/setter 和/或 HashMap 的面向对象的类。

1:

public class PlayerInventory
{
    private String[] inventoryStr = new String[20]; // basic implementation

inventoryStr[0] = "Phone";
inventoryStr[0] = "Book";
}

2:

int arrayLength = inventoryStr.length;

3:

for(int i=0; i < inventoryStr.length; i++) {
    System.out.println( inventoryStr[i] );
}

重构(在为此编写单元测试之后)

1*:(带有列表)

    import java.util.*;  
    import java.util.*;  

    public class CollectionGetterSetter {  
        private List<String> playerInventory;  

        public void setPlayerInventory(List<String> inv) {  
            this.playerInventory = inv;  
        }  

        public List<String> getPlayerInventory() {  
            return this.playerInventory;  
        }  

        public static void main(String[] args) {  
            CollectionGetterSetter app = new CollectionGetterSetter();  
            List<String> PlayerInventory = new ArrayList();  
            PlayerInventory.add("phone");  
            PlayerInventory.add("book");  
            PlayerInventory.add("glasses");  
            PlayerInventory.add("nav");  

            app.setPlayerInventory(PlayerInventory);  

            System.out.println("Player 1: " + PlayerInventory);    

            List<String> PlayerInventory2 = new ArrayList();  
            PlayerInventory2.add("cap");  
            PlayerInventory2.add("gown");  
            PlayerInventory2.add("foo");  
            PlayerInventory2.add("bar");  

        }  

    }  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2020-02-12
    • 1970-01-01
    • 2011-10-28
    相关资源
    最近更新 更多