2015-11-03 107 views
0

我試圖顯示以用戶輸入指定的字母開頭的單詞列表。如何獲得以指定字母開頭的所有單詞

因此,例如,如果我將三個單詞添加到我的列表中,cat,corn和dog,並且用戶輸入字母c,則Java applet上的輸出應該是cat,corn。

但是,我不知道如何去做這件事。

public void actionPerformed(ActionEvent e){ 
    if (e.getSource() == b1){ 
     x = textf.getText(); 
     wordList.add(x); 
     textf.setText(null); 
    } 

    if (e.getSource() == b2){ 
    } 
} 

b1是將所有的用戶輸入一個祕密存儲列表,我現在不想再拍按鈕按下表明由用戶指定的字母開頭的單詞的時候。

textf = my text field 
wordList = my list I created 
x = string I previously defined 
+0

你如何申報'wordList'? – Arc676

+0

列表 wordList = new ArrayList (); –

回答

0

您可以遍歷所有可能的索引,檢查該索引處的元素是否以字母開頭,如果是,則打印。

選擇(和可能更好)代碼(我打算以後把這個,但由於其更好不愧爲先採取形式@ larsmans的回答here

//given wordList as the word list 
//given startChar as the character to search for in the form of a *String* not char 
for (String element : wordList){ 
    if (element.startsWith(startChar)){ 
     System.out.println(element); 
    } 
} 

免責聲明。:此代碼是未經測試,我沒有太多的經驗與ArrayList,和Java是更季編程語言對我來說,希望工程:)

//given same variables as before 
for (int i = 0; i < wordList.size(); i++){ 
    String element = wordList.get(i); 
    //you could remove the temporary variable and replace element with 
    // wordList.get(i) 
    if (element.startsWith(startChar){ 
     System.out.println(element); 
    } 
} 
+0

這實際上是否會在一個小程序中打印出來,因爲那是我遇到的主要問題 –

+0

嗯,我並沒有真正使用小程序,因此您必須爲自己找到它。您可以創建一個新的文本字段並將其添加到它。我很確定'System.out.println'可以在applet上工作。你可以隨時嘗試。 – Arc676

+0

是的,我會找到一種方式,因爲沒有打印,但我知道代碼是正確的,因爲我之前做過類似的事情,但沒有發生任何事情。謝謝你的幫助 –

0

你可以嘗試這樣的事情 -

​​

結果是 -

[aah, abh] 
0

如果你可以使用Java 8那麼您可以在功能建立過濾列表:

public static void main(String[] args) throws Exception { 
    final List<String> list = new ArrayList<>(); 
    list.add("cat"); 
    list.add("corn"); 
    list.add("dog"); 
    System.out.println(filter(list, "c")); 
} 

private static List<String> filter(final Collection<String> source, final String prefix) { 
    return source.stream().filter(item -> item.startsWith(prefix)).collect(Collectors.toList()); 
} 

這使用filter方法來過濾每個列表項,該列表項以prefix arg的字符串開頭ument。

輸出是:

[貓,玉米]

相關問題