首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从指定为“this”的方法中拉取值。

如何从指定为“this”的方法中拉取值。
EN

Stack Overflow用户
提问于 2014-09-16 17:25:20
回答 1查看 80关注 0票数 1

我有这样的信息:

代码语言:javascript
运行
复制
xxx      0      1      2      ...
Name     Fred0  Fred1  Fred2
Stamina  2      6      7
Intel    5      4      1
Heart    4      8      2
Speed    5      3      6

所以,我之前被告知,创建一个2D ArrayList来存储这样的东西是“过时的”,并且提供了一种不同的方式来设置我的代码。我使用ArrayList<>的原因是因为我希望能够根据需要生成新的参赛者,而不是指定一个大小的数组。如果我可以使用一个简单的数组,这在一周前就已经完成了。现在我已经摆弄了一个星期了,我还是不明白它是怎么工作的。

代码语言:javascript
运行
复制
public class test {
    public String name;
    private int stamina;
    private int heart;
    private int intel;
    private int speed;
    public ArrayList<String> racers = new ArrayList<String>();

    private void racerInfo(String name) {
        this.name = name;
        this.stamina = (int) Math.floor(Math.random()*10);
        this.heart = (int) Math.floor(Math.random()*10);
        this.intel = (int) Math.floor(Math.random()*10);
        this.speed = (int) Math.floor(Math.random()*10);
    }

    public void generate() {
        for ( int i=0; i<=10; i++) {
            String name = "Fred" + i;
            System.out.println(name);
            racerInfo(name);
            racers.add(name);
        }
    }

    public int getStamina() {
        return this.stamina;
    }
    public int getHeart() {
        return this.heart;
    }
    public int getIntel() {
        return this.intel;
    }
    public int getSpeed() {
        return this.speed;
    }
}

public class main {
    public static test test = new test();

    public static void main(String[] args) {
        test.generate();
        //Put stuff here to pull stamina of Fred2 for example.
    }
}

现在,在主类中。我应该如何做一些相对简单的事情,比如提取Fred2的耐力值。我一直在遵循这里的其他人给我的确切方向来编写大部分代码。但在这个时候,我只是重写了它,以便每个统计数据(姓名、耐力、英特尔、速度等)只是作为一个单独的ArrayList<>记录。但是我不知道如何制作包含原始ArrayLists ie的2D ArrayList。

代码语言:javascript
运行
复制
ArrayList<String> name = new ArrayList<String>();
ArrayList<Integer> stamina = new ArrayList<Integer>();
ArrayList<ArrayList<Object>> arrayOfArray = new ArrayList<ArrayList<Object>>();

是的,我知道arrayOfArray可能做错了,但是,再一次,我只是被告知它是过时的,没有人会告诉我如何才能把它做对,这样我就可以走了。arrayOfArray.get(2,1)并获取我想要/需要的信息。

很抱歉这里的信息过载了。但我正在努力为我想做的事情找到可能的最佳解决方案。如果你能告诉我如何正确地摆脱任何一种方式,我将永远感谢你,你和你所有的后代。

EN

回答 1

Stack Overflow用户

发布于 2014-09-16 17:34:09

首先,您应该将您的类测试重构为类Racer,这是一个有意义的名称,并遵循以大写字母开头的约定。此外,您应该向构造器添加耐力、英特尔、心脏和速度:

代码语言:javascript
运行
复制
public Racer(String name, int stamina, int intel, int heart, int speed) {
    this.name = name;
    this.stamina = stamina;
    this.intel = intel;
    this.heart = heart;
    this.speed = speed;
}

现在你可以创建你的赛车,如下所示:

代码语言:javascript
运行
复制
Racer fred2 = new Racer("Fred2", 7, 1, 2, 6);

您可以将值存储在HashMap中。HashMap是一个由键值对组成的集合。对于key,您可以使用字符串(Racer的名称),作为值,您可以获取类Racer的一个实例:

代码语言:javascript
运行
复制
HashMap<String, Racer>() racerMap = new HashMap<>();
racerMap.put("Fred2", fred2);

你可以在一个for循环中为你所有的参赛者做这件事。现在,您可以通过调用getMethod并将name作为参数放入其中,从HashMap中获取racer对象。这将返回一个Racer类的对象,您可以在此对象上调用getter方法:

代码语言:javascript
运行
复制
racerMap.get("Fred2").getSpeed();

代码语言:javascript
运行
复制
racerMap.get("Fred2").getIntel();

编辑:我刚刚看到了你的generate方法。此方法应返回参赛者的HashMap。在main方法中,创建一个新的HashMap:

代码语言:javascript
运行
复制
HashMap<String, Racer> racerMap = generate();

现在,您可以使用上面描述的地图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25865119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档