0

我有一个带有存储国家/地区的数组列表的国家/地区。我创建了一个 get 和 set 来从数组列表中的指定索引添加和获取项目,但我不会工作。每当我从 arraylist 调用索引时,我都会得到一个越界异常,因为数组是空的或者至少看起来是空的。

public class country extends Application {

    public ArrayList<country> countryList = new ArrayList<country>();
    public String Name;
    public String Code;
    public String  ID;

    public country()
    {

    }

    public country(String name, String id, String code)
    {
        this.Name = name;
        this.ID = id;
        this.Code = code;
    }

    public void setCountry(country c)
    {
        countryList.add(c);
    }

    public country getCountry(int index)
    {   
        country aCountry = countryList.get(index);
        return aCountry;
    }

调用我使用的二传手。我在 for 循环中执行此操作,因此它添加了 200 多个元素

country ref = new country();

ref.setCountry(new country (sName, ID, Code));

然后当我想得到一个索引

String name = ref.countryList.get(2).Name;

我做了同样的事情,但使用了一个本地数组列表,它填充得很好,我能够显示名称,所以数据源不是问题,无论我做错了设置并在国家类的数组列表中获取数据

4

3 回答 3

0

您访问一个不存在的索引。您只需添加一个您只能访问的国家/地区:

String name = ref.countryList.get(0).Name;

你真的应该重新考虑你的设计。public属性不是最佳实践方式。这就是为什么首先应该编写 getter 和 setter 方法的原因。

你应该这样做:

public Country getCountry(int index)
{
    if(index < countryList.size())
    {
        return countryList.get(index);
    }
    return null;
}
于 2013-05-09T09:39:52.797 回答
0

String name = ref.countryList.get(2).Name;您尝试获取列表中的第三个元素时,您只添加了一个......
它应该是String name = ref.countryList.get(0).Name;并且您需要在之前检查是否没有收到空指针异常

于 2013-05-09T09:40:01.883 回答
-1

按照您ref.countryList.get(0).Name在列表中仅添加一项的方式进行操作。

我会建议更多像

 ref.countryList.get(0).getName()
于 2013-05-09T09:41:41.140 回答