2014-12-06 79 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(); 
     } 
    } 
} 
相关问题