2014-03-28 66 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