2014-12-06 78 views
1

我已經創建了一個ArrayList來存儲客戶的名字。然後我用一些名字填充了列表。如何找到用戶輸入的字母開頭的名字?

現在我想要求用戶輸入一個字母,然後找到所有的名字開始與輸入的字母包含輸入字母的所有名稱。

這就是我在哪裏,現在高達:

package costomersearching; 

import java.util.ArrayList; 
import java.util.Scanner; 

public class CostomerSearching { 

    public static void main(String[] args) { 
     ArrayList<String> customerName = new ArrayList(); 
     Scanner input = new Scanner(System.in); 
     customerName.add("Sara"); 
     customerName.add("John"); 
     customerName.add("Miami"); 
     customerName.add("Mart"); 
     customerName.add("Alex"); 

     System.out.println("Customer List: \n" + customerName); 
     System.out.println("Search Customer by letter: "); 
     String letter = input.next(); 
     //show the name containg the letter starting as the first letter 
     //Show the name containing the letetr. 
    } 

} 
+0

你知道如何循環工作? – 2014-12-06 19:49:06

+0

循環訪問數組,併爲每個值執行'name.startsWith(letter)'和'name.contains(letter)' – 2014-12-06 19:49:34

回答

1

簡單地遍歷ArrayList並搜索正確的名稱。你可以做這樣的:

//show names containing the letter starting as the first letter 
for(String i : costumerName) { 
    if(i.startsWith(letter)) System.out.println(i); 
} 

//show names containing the letter 
for(String i : costumerName) { 
    if(i.contains(letter)) System.out.println(i); 
} 

希望這有助於:)

+0

每次執行'toCharArray()'時,都會創建一個新對象。相反,您可以使用'i.charAt(0)'(返回字符串第一個索引處的字母)來檢查字符串的第一個索引,或者您可以只使用'i.startsWith(letter)'。無需爲每個名稱添加額外的對象 – 2014-12-06 19:55:48

+0

TrezzJo,它有助於我獲得了這個概念。 – Simon 2014-12-06 20:09:19

+0

謝謝:)同樣來自Vince的反饋 – TrezzJo 2014-12-06 21:00:14

1

您正在搜索的方法是startsWith(字符串),包含(CharSequence的)String類。另外,這樣它也可以處理多個字母。

只是循環訪問客戶名單並檢查名稱。 只要你找到一個匹配的,你就可以將它添加到你想要打印給用戶的客戶列表中。

String searchterm = "s"; // You read the string from console 

// Existing customers 
ArrayList<String> customerNames = new ArrayList<String>(); 

// A list of customer names starting with the search term 
ArrayList<String> matchesStarting = new ArrayList<String>(); 

// A list of customer names containing the search term 
ArrayList<String> matchesContaining = new ArrayList<String>(); 

// Iterate over customers and check for each one if it matches the search term 
for(String customer: customerNames) { 

    // If it starts with the search term, add it to the list of start matches 
    if(customer.startsWith(searchterm)) 
     matchesStarting.add(customer); 

    // If it contains the search term, add it to the list of start matches 
    if(customer.contains(searchterm)) 
     matchesContaining.add(customer); 
} 
0
import java.util.ArrayList; 
import java.util.List; 
import java.util.Scanner; 


public class TestStack { 
    public static void main(String[] args) { 
     Scanner input = null ; 
     try{ 
      ArrayList<String> customerName = new ArrayList<>(); 
      input = new Scanner(System.in); 
      customerName.add("Sara"); 
      customerName.add("John"); 
      customerName.add("Miami"); 
      customerName.add("Mart"); 
      customerName.add("Alex"); 

      System.out.println("Customer List: \n" + customerName); 
      System.out.println("Search Customer by letter: "); 
      String letter = input.next(); 

      List<String> searchResult = new ArrayList<>(); 
      for (String string : customerName) { 
        if(string.contains(letter)) 
        searchResult.add(string); 
      } 

      List<String> searchResultStartsWithSpecifiedLetters = new ArrayList<>(); 
      for (String string : customerName) { 
       if(string.startsWith(letter)) 
        searchResult.add(string); 
      } 

      System.out.println("Displaying result containing entered letters"); 
      // Displays result containing those letters 
      for (String string : searchResult) { 
       System.out.println(string); 
      } 

      System.out.println("Displaying result starts with entered letters"); 
      // Displays result starts with those letters 
      for (String string : searchResultStartsWithSpecifiedLetters) { 
       System.out.println(string); 
      } 
     }finally{ 
      input.close(); 
     } 
    } 
} 
相關問題