【问题标题】:Adding entries to an Arraylist向 Arraylist 添加条目
【发布时间】:2014-03-28 18:56:09
【问题描述】:

我正在尝试编译将地址簿条目添加到我的数组中的代码。我有大部分驱动程序,它接受名字和姓氏的输入,然后添加它们,并搜索某些值。我的问题是添加新条目的代码 - 我试图在通讯簿中添加多个字符串作为一个条目,然后调用 addEntry,但我收到以下错误...

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:17:错误:类 SJAddressBook 中的构造函数 SJAddressBook 不能应用于给定类型; aBook.add(new SJAddressBook()); ^ 必需:字符串,字符串 发现:没有参数 原因:实际参数列表和形式参数列表的长度不同

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:18:错误:找不到符号 aBook.get(count).addEntry(); ^ 符号:方法 addEntry() 位置:SJAddressBook 类

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:24:错误:找不到符号 int foundIndex = abook.search(SJ); ^ 符号:变量 SJ 位置:ScherpichJamesTest2 类

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:24:错误:找不到符号 int foundIndex = abook.search(SJ); ^ 符号:变量 abook 位置:ScherpichJamesTest2 类

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:30:错误:找不到符号 SJ.get(foundIndex).display(); ^ 符号:变量 SJ 位置:ScherpichJamesTest2 类 .\SJAddressBook.java:27:错误:缺少方法主体,或声明抽象 公共静态 int 搜索(ArrayListaBook); ^ .\SJAddressBook.java:34:错误:找不到符号 int 选择=整数.parseInt(entry.nextLine()); ^ 符号:变量整数 位置:SJAddressBook 类 .\SJAddressBook.java:38:错误:找不到符号 for(SJAddressBook 地址:aBook) ^ 符号:变量 aBook 位置:SJAddressBook 类 .\SJAddressBook.java:44:错误:返回外部方法 返回 aBook.IndexOf(Address); ^ .\SJAddressBook.java:47:错误:找不到符号 if(value.equalisIgnoreCase(Address.LAST)) ^ 符号:方法 equalisIgnoreCase(String) location:String类型的变量值 .\SJAddressBook.java:48:错误:返回外部方法 返回 aBook.IndexOf(Address); ^ .\SJAddressBook.java:53:错误:返回外部方法 返回-1; ^ 12个错误

这是我的主要方法类

{

public static void main(String[] args)

{
    ArrayList<SJAddressBook> aBook = new ArrayList<SJAddressBook>();
    for (int count =0;count <3;count ++)
    {

    aBook.add(new SJAddressBook());
    aBook.get(count).addEntry();
    System.out.println();


    }

    int foundIndex = abook.search(SJ);

    System.out.println();

    if (foundIndex > -1)

        SJ.get(foundIndex).display();

    else

        System.out.println("No Entry Found");

}

}

//还有我的驱动类

public class SJAddressBook                  //start class definition
{
static String FIRST;
private String LAST;

public SJAddressBook(String first, String last)
{
    Scanner entry = new Scanner (System.in);
    System.out.print("Please Enter First Name: ");
    FIRST = entry.nextLine();
    System.out.print("Please Enter Last Name: ");
    LAST = entry.nextLine();
}
public static int search(ArrayList<SJAddressBook>aBook);
{
    Scanner entry = new Scanner (System.in);
    System.out.println("1. First Name");
    System.out.println("2. Last Name");

    System.out.print("Please Enter Field to Search: ");
    int choice=integer.parseInt(entry.nextLine());
    System.out.println("Please enter value to search for: ");
    String value=entry.nextLine();

    for(SJAddressBook Address: aBook)
    {
        switch(choice)
        {
            case 1:
            if(value.equalsIgnoreCase(Address.FIRST))
            return aBook.IndexOf(Address);
            break;
            case 2:
            if(value.equalisIgnoreCase(Address.LAST))
            return aBook.IndexOf(Address);
            break;

        }
    }
    return -1;
}
public void display()
{
    System.out.println("First Name: "+this.FIRST);
    System.out.println("Last Name: "+this.LAST);
}
}

【问题讨论】:

  • 要修复的第一个错误:在您的 SJAddressBook 类中添加一个默认构造函数,如果您有一个带参数的构造函数,那么 JAVA 不会隐式创建默认值 或者在您的 main 方法中在执行时提供两个字符串参数aBook.add(new SJAddressBook());
  • 如何修复驱动类中有 2 个参数的空构造函数?

标签: java arrays search arraylist


【解决方案1】:

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:17:错误:类 SJAddressBook 中的构造函数 SJAddressBook 不能应用于给定类型; aBook.add(new SJAddressBook()); ^ 必需:字符串,找到字符串:无参数原因:实际参数列表和形式参数列表的长度不同

  • 您将 new SJAddressBook () 作为空构造函数调用,并且该类的唯一构造函数需要 2 个参数 SJAddressBook (String first, String last)

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:18: 错误:找不到符号 aBook.get (count).addEntry (); ^ 符号:方法 addEntry() 位置:SJAddressBook 类

  • SJAddressBook 类中没有定义addEntry ()。通过调用 aBook.get (count),您将返回 get (count) 位置的 SJAddressBook

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:24: 错误:找不到符号 int foundIndex = abook.search (SJ); ^ 符号:变量 SJ 位置:ScherpichJamesTest2 类

  • SJ 没有在任何地方定义(我可以在您的示例中看到)

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:24: 错误:找不到符号 int foundIndex = abook.search (SJ); ^ 符号:变量 abook 位置:ScherpichJamesTest2 类

  • 也未定义 - 它应该是 aBook 而不是 abook

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:30: 错误:找不到符号 SJ.get (foundIndex).display (); ^ 符号:变量 SJ 位置:ScherpichJamesTest2 类

  • 再次SJ未定义

.\SJAddressBook.java:27: 错误:缺少方法体,或声明抽象公共静态 int 搜索 (ArrayListaBook); ^

  • 你有一个';' public static int search(ArrayList&lt;SJAddressBook&gt;aBook); 不应该在那里

.\SJAddressBook.java:34: 错误: 找不到符号 int 选择=integer.parseInt (entry.nextLine ()); ^ 符号:变量整数位置:SJAddressBook 类

  • 整数 不是 整数

.\SJAddressBook.java:38:错误:找不到符号(SJAddressBook 地址:aBook)^ 符号:变量 aBook 位置:SJAddressBook 类

  • 因为以前的错误与 ';'编译器认为这是一个静态代码块并且认为 aBook 没有定义

.\SJAddressBook.java:44: 错误:返回外部方法 return aBook.IndexOf (Address); ^

  • 相同,因为 ';'

.\SJAddressBook.java:47:错误:找不到符号 if (value.equalisIgnoreCase (Address.LAST)) ^ 符号:方法 equalisIgnoreCase (String) 位置:String 类型的变量值

  • equalsIgnoreCase 不是 equalsIgnoreCase

.\SJAddressBook.java:48: 错误:返回外部方法 return aBook.IndexOf (Address); ^

  • 相同,因为 ';'

.\SJAddressBook.java:53: 错误:返回外部方法返回 -1; ^ ; 12个错误

  • 相同,因为 ';'

免费的 ide 可能会让您的生活更轻松。 eclipse, intellij

【讨论】:

  • 我是新手,eclipse 能为我做什么?对调试有帮助吗?我正在使用文本板。
  • 是的,它会的。开始可能会有点学习曲线,但它能够使用调试器逐行遍历您的代码,它具有语法突出显示、自动完成、自动导入 - 这个问题的许多错误之前都会被捕获甚至编译。如果您不想处理学习 ide,您也可以尝试notepad++。我相信它会给你一些语法高亮。我个人更喜欢免费的社区版 intellij。
  • 我想我正在努力解决的是构造函数方法,以及如何定义该 aBook 变量。我会把这些放在哪里?
猜你喜欢
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-03
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
相关资源
最近更新 更多