2014-03-28 64 views
-1

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

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

C:\用户\ Scherpich \桌面\吉姆学校\ CS 219编程基础知识\程序\ ScherpichJamesTest2.java :18:错误:找不到符号 aBook.get(count).addEntry(); ^ 符号:方法的addEntry() 位置:类SJAddressBook

C:\用户\ Scherpich \桌面\吉姆学校\ CS 219个编程基础知识\程序\ ScherpichJamesTest2.java:24:错误:无法找到符号 INT foundIndex = abook.search(SJ); ^ 符号:变量SJ 位置:类ScherpichJamesTest2

C:\用户\ Scherpich \桌面\吉姆学校\ CS 219个编程基础知识\程序\ ScherpichJamesTest2.java:24:错误:无法找到符号 INT foundIndex = abook.search(SJ); ^ 符号:变量ABOOK 位置:类ScherpichJamesTest2

C:\用户\ Scherpich \桌面\吉姆学校\ CS 219编程基础知识\程序\ ScherpichJamesTest2.java:30:错误:无法找到符号 SJ.get (foundIndex)。显示(); ^ 符号:变量SJ 位置:class ScherpichJamesTest2 。\ SJAddressBook.java:27:错误:缺少方法体,或声明为抽象 public static int search(ArrayListaBook); ^ 。\ SJAddressBook.java:34:error:can not find symbol int choice = integer.parseInt(entry.nextLine()); ^ 符号:可变整数 位置:类SJAddressBook \ SJAddressBook.java:38:错误:找不到(SJAddressBook地址:ABOOK)符号 ^ 符号:可变ABOOK 位置:类SJAddressBook \ SJAddressBook .java:44:error:return outside方法 return aBook.IndexOf(Address); ^ \ SJAddressBook.java:47:错误:找不到符号 如果(value.equalisIgnoreCase(Address.LAST)) ^ 符号:方法equalisIgnoreCase(字符串) 位置:String类型 的变量值\ SJAddressBook .java:48:error:return outside方法 return 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); 
} 
} 
+0

为了解决第一个错误:在您的SJAddressBook类添加默认的构造函数,如果你有参数的构造函数,然后Java不隐式或在你的主要方法提供了两个字符串参数在执行ABOOK创建一个默认。添加(新的SJAddressBook()); – shailbenq

+0

我会试试这个! – user3313912

+0

如何修复在驱动程序类中有2个参数的空构造函数? – user3313912

回答

2

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:17: error: constructor SJAddressBook in class SJAddressBook cannot be applied to given types; aBook.add(new SJAddressBook());^required: String,String found: no arguments reason: actual and formal argument lists differ in length

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

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:18: error: cannot find symbol aBook.get (count).addEntry();^symbol: method addEntry() location: class SJAddressBook

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

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:24: error: cannot find symbol int foundIndex = abook.search (SJ);^symbol: variable SJ location: class ScherpichJamesTest2

  • SJ没有任何地方定义(即我可以将您的样品中看到)

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:24: error: cannot find symbol int foundIndex = abook.search (SJ);^symbol: variable abook location: class ScherpichJamesTest2

  • 还没有定义 - 它应该是ABOOK没有abook

C:\Users\Scherpich\Desktop\Jim School\CS 219 Programming Fundamentals\Programs\ScherpichJamesTest2.java:30: error: cannot find symbol SJ.get (foundIndex).display();^symbol: variable SJ location: class ScherpichJamesTest2

  • 再次SJ没有定义

.\SJAddressBook.java:27: error: missing method body, or declare abstract public static int search (ArrayListaBook); ^

  • 你有一个 ';' public static int search(ArrayList<SJAddressBook>aBook);不应该有

.\SJAddressBook.java:34: error: cannot find symbol int choice=integer.parseInt (entry.nextLine());^symbol: variable integer location: class SJAddressBook

  • 整数整数

.\SJAddressBook.java:38: error: cannot find symbol for (SJAddressBook Address: aBook)^symbol: variable aBook location: class SJAddressBook

  • 由于以前的错误与所述的 ';'编译器认为这是一个静态代码块,认为ABOOK没有定义

.\SJAddressBook.java:44: error: return outside method return aBook.IndexOf (Address); ^

  • 同样,由于“;”

.\SJAddressBook.java:47: error: cannot find symbol if (value.equalisIgnoreCase (Address.LAST))^symbol: method equalisIgnoreCase (String) location: variable value of type String

  • equalsIgnoreCaseequalisIgnoreCase

.\SJAddressBook.java:48: error: return outside method return aBook.IndexOf (Address); ^

  • 同样,由于 ';'

.\SJAddressBook.java:53: error: return outside method return -1;^ ; 12 errors

  • 相同,因为的, ';'

一个免费的IDE可能会让你的生活更轻松。 eclipseintellij

+0

我对此很陌生,日食会为我做什么?它有助于调试吗?我正在使用textpad。 – user3313912

+0

是的,它会的。它可以有一点点的学习曲线开始,但它有能力逐行地使用调试器来代码,它有语法高亮显示,自动完成,自动导入 - 这个问题的许多错误将被捕获甚至编译。你也可以试试[记事本++](http://notepad-plus-plus.org)如果你不想处理学习ide。我相信它会给你一些语法高亮。我个人更喜欢intellij免费的社区版。 – Scott

+0

我想我正在努力的是构造函数方法,以及如何定义aBook变量。我会在哪里放置这些? – user3313912