【问题标题】:Can't get a value from an object while iterating through an arrayList using a method使用方法迭代arrayList时无法从对象获取值
【发布时间】:2015-06-02 20:00:39
【问题描述】:

我在获取 authors arrayList 'name' 值中的 an 元素时遇到问题。 Name 是一个私有变量,并且必须是,所以我使用一种方法(我已经测试过)来返回它。 仅仅编程了几个星期,如果我使用了不正确/令人困惑的术语,请见谅。

作者是一个类 authors 是 Author 对象的 arrayList。

这是我尝试过的一个:

//Iterating through all elements of authors
for (i = 0; i < Author.authors.size(); i++)
    Author authTemp = (Author.authors.get(i)); // *****
    String nameTemp = authTemp.getName();// *****
    if (equalsIgnoreCase(nameTemp, entered)){
        nameExists = true;
    break;
}

还有一个

//Iterating through all elements of authors
for (i = 0; i < Author.authors.size(); i++)
    if (equalsIgnoreCase(**(Author.authors.get(i).getName()**), entered)){
        nameExists = true;
    break;
}

知道我做错了什么吗?提前致谢。

【问题讨论】:

  • 你有什么问题?你看到什么错误?为什么 Author 有自己的静态 ArrayList?
  • 你的循环没有大括号。这很重要。
  • 未定义类型 book 的 equalsIgnoreCase(String,String) 方法。

标签: java object methods arraylist


【解决方案1】:

你在 author 中有一个作者数组列表,它会导致无限递归,因为 author1 有一个 author2 的作者列表,而 author2 有另一个列表,依此类推(这可能取决于你是如何做到的)。

尝试将作者数组列表从作者类中取出并检查代码大括号。

【讨论】:

  • 作者 ArrayList 看起来是 Author 类的静态字段,所以我不清楚这将如何导致无限递归。我同意它不属于 Author 类,但出于设计原因,而不是无限递归问题——据我所知,原始发帖人没有提到。
  • 我不太确定。无论如何,作者列表不应该出现在作者类别中。
  • "And the authors list shoudn't be on author class anyway." .... 正如我已经提到的。
  • 是的。将作者列表保存在“产品”中更有意义。例如书有这个作者并把列表放在那里。
  • 我理解它可能会更好地将它放在不同的类中,我现在已经这样做了。 ArrayList 是静态的,所以我还是把它拿出来放到了一个新的类“Store”中。
【解决方案2】:

您应该创建一个对象的new 实例以访问其方法。

可能你有这样的事情:

Object obj;

这告诉编译器 obj 的类型,但它仍然为空(null)。

应该是这样的:

Object obj = new Object();

这会创建一个新实例并让您从 Object 访问方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2016-08-23
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多