【问题标题】:method add in ArrayList<ClassName> is not applicable for the arguments (String)ArrayList<ClassName> 中的方法添加不适用于参数(字符串)
【发布时间】:2016-03-30 03:29:15
【问题描述】:

我正在尝试读取一个 .txt 文件,该文件包含几行,每一行都带有专业职业者的姓名。我创建了一个扫描仪,但是每当我想添加扫描仪刚刚读取的内容并尝试将其添加到 arrayList 时,就会弹出此错误

ArrayList类型中的方法add(ClassName)不适用于参数(String)

ArrayList<Claseqla> clista = new ArrayList<Claseqla>();

        Scanner s = new Scanner(new File("texto.txt"));

        while(s.hasNextLine())
        {
            **clista.add(s.nextLine());**
        }

这是另一个类中的一段代码; 粗体标记的行是错误弹出的位置。 clista 只有 2 个属性,但我想将它们添加到列表中,只填充一个 String 元素,另一个为空(这甚至可能吗?)

【问题讨论】:

  • 创建一个新的Claseqla 对象,设置其字符串元素之一,将该对象添加到列表中。重复...
  • 如果你想打印你的课程,请阅读stackoverflow.com/questions/29140402/…
  • 我刚刚看了文字,现在可以打印了。非常感谢。

标签: java file text


【解决方案1】:

s.nextLine() 返回一个String。但是您的ArrayList 具有通用类型Claseqla。您需要使用从s.nextLine() 调用中获取的字符串创建一个Claseqla 对象,然后将该对象添加到您的ArrayList

【讨论】:

  • 谢谢!它起作用了,现在我唯一的问题是当我打印像 System.out.println(clista); 这样的 whiole 列表时显示看起来像 Claseqla 值中的地址。
  • 我得到的元素数量与打印的文本相同,但它们看起来像地址。如何打印该 ArrayList 中字符串的实际值? (再次感谢!)
【解决方案2】:

我猜你是想说 Claseqla 类有 2 个属性。如果是这样,那么您可以创建一个 Claseqla 对象并使用 s.nextline() 设置其中一个属性的值

while(s.hasNextLine())
{
    Claseqla cq = new Claseqla();
    cq.setCareer(s.nextLine());
    clista.add(cq);
}

这是假设您的 Claseqla 类中有一个名为 career (String) 的属性及其各自的 setter 函数。

【讨论】:

    猜你喜欢
    • 2016-04-17
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 2016-09-19
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多