2014-03-29 117 views
0

我有我的工作程序,創建一個地址數組,然後搜索它們。錯誤搜索arraylist

但我的搜索只看第二個條目(在索引1)如何讓我的搜索查看所有條目而不是第二條?

隨意問我是否沒有發佈足夠的細節!

public static void main(String[] args)   //start method main 
    { 
    ArrayList<SJAddressBook> SJ = new ArrayList<SJAddressBook>(); 
    SJAddressBook aBook = null; 
    for (int count =0;count <3;count ++) 
    { 

    aBook = new SJAddressBook(); 
    SJ.add(aBook.addEntry()); 
    System.out.println(); 
    } 
    int foundIndex = aBook.search(SJ);   //execute search 
    System.out.println(); 
    if (foundIndex > -1) 
     SJ.get(foundIndex).display(); 
    else 
     System.out.println("No Entry Found!"); 

而且我的搜索

int search(List<SJAddressBook> addressBook)    
    { 
    Scanner entry = new Scanner(System.in); 

    System.out.println(" Search Menu;\n 1. First Name \n 2. Last Name \n 3. Street Address \n 4. City, State \n 5. Zip Code "); 
    System.out.println(); 
    System.out.print("Please enter Field to Search: "); 
    String menu = entry.next(); 
    System.out.println(); 
    System.out.print("Please enter Value to Search: "); 
    String value = entry.next(); 
    int index = 0; 
    for (SJAddressBook address : addressBook)   //recieve ArrayList as argument 
    { 
     switch (index)         //intitialze switch 
     { 
      case 1: 
      if (address.getFirstName().equalsIgnoreCase(value)) 
       return index; 
       break; 
      case 2: 
      if (address.getLastName().equalsIgnoreCase(value)) 
       return index; 
       break; 
      case 3: 
      if (address.getStreetAddress().equalsIgnoreCase(value)) 
       return index; 
       break; 
      case 4: 
      if (address.getCityState().equalsIgnoreCase(value)) 
       return index; 
       break; 
      case 5: 
      if (address.getZipCode().equalsIgnoreCase(value)) 
       return index; 
       break; 
     }            //end switch 

     index++; 

    } 
    return -1; 
} 

回答

0

我假設你的函數搜索試圖找到該用戶的輸入匹配它的一些領域的書,如果這是正確的,你爲什麼要使用交換機?

int search(List<SJAddressBook> addressBook) { 
    Scanner entry = new Scanner(System.in); 

    System.out 
      .println(" Search Menu;\n 1. First Name \n 2. Last Name \n 3. Street Address \n 4. City, State \n 5. Zip Code "); 
    System.out.println(); 
    System.out.print("Please enter Field to Search: "); 
    String menu = entry.next(); 
    System.out.println(); 
    System.out.print("Please enter Value to Search: "); 
    String value = entry.next(); 
    int index = 0; 
    for (SJAddressBook address : addressBook) // recieve ArrayList as 
               // argument 
     if (address.getFirstName().equalsIgnoreCase(value) || 
       address.getLastName().equalsIgnoreCase(value) || 
       address.getStreetAddress().equalsIgnoreCase(value) || 
       address.getCityState().equalsIgnoreCase(value) || 
       address.getZipCode().equalsIgnoreCase(value)){ 
       return index; 
     } 
     index ++; 
    } 

    return -1; 
} 

編輯 你帶開關功能(這裏沒有有用的,順便說一句):

int search(List<SJAddressBook> addressBook) { 
    Scanner entry = new Scanner(System.in); 

    System.out 
      .println(" Search Menu;\n 1. First Name \n 2. Last Name \n 3. Street Address \n 4. City, State \n 5. Zip Code "); 
    System.out.println(); 
    System.out.print("Please enter Field to Search: "); 
    String menu = entry.next(); 
    System.out.println(); 
    System.out.print("Please enter Value to Search: "); 
    String value = entry.next(); 
    int index = 0; 
    for (SJAddressBook address : addressBook) // recieve ArrayList as 
     for(int i =0 ; i <= 5; i++){ 

      switch (index)         //intitialze switch 
      { 
       case 1: 
       if (address.getFirstName().equalsIgnoreCase(value)) 
        return index; 
        break; 
       case 2: 
       if (address.getLastName().equalsIgnoreCase(value)) 
        return index; 
        break; 
       case 3: 
       if (address.getStreetAddress().equalsIgnoreCase(value)) 
        return index; 
        break; 
       case 4: 
       if (address.getCityState().equalsIgnoreCase(value)) 
        return index; 
        break; 
       case 5: 
       if (address.getZipCode().equalsIgnoreCase(value)) 
        return index; 
        break; 
      } 
     } 

     index ++; 
    } 
    return -1; 
} 
+0

交換機是一個你可以只檢查領域的簡化代碼所以我必須添加它的要求。 – user3313912

+0

根據您的要求編輯 –

+0

非常感謝! – user3313912