string的arrayList包含特定字符java

时间:2016-09-12 17:43:37

标签: java string arraylist character

尝试java学校PigLatin项目,我循环遍历Strings的Arraylist并检查char 0中的String是否有元音。有没有比写出||更简单的方法对于每个元音(小写和大写)。这是我开始列出很长时间的一个例子......

    for (int i = 0; i<arrayList.size(); i++){
        if (arrayList.get(i).charAt(0) == 'a' || arrayList.get(i).charAt(0) == 'e'){
            System.out.println(arrayList.get(i) + "way");
        }

    }

我无法在网上找到这个直截了当的答案。我已经看过stringbuilder和其他潜在的复杂选项但不确定我是否需要使用它们。

4 个答案:

答案 0 :(得分:0)

您可以创建一个静态方法isVowel(char c)以在条件语句中使用:

for (int i = 0; i<arrayList.size(); i++) {
    if (isVowel(arrayList.get(i).charAt(0))) {
        System.out.println(arrayList.get(i) + "way");
    }
}

public static boolean isVowel(char c) {
  return "AEIOUaeiou".indexOf(c) != -1;
}

答案 1 :(得分:0)

如果它有助于您感觉更好或使用ASCII代码,您可以使用开关案例。

定义一个函数isVowel或类似的东西,为自己工作相同的逻辑,并在需要时重用它。

但恕我直言,在最基本的层面上,你必须为你要检查的所有元音单独工作。

答案 2 :(得分:0)

您可以使用pattern matching来略微减少混乱。如前所述,您还可以添加isVowel()方法来分隔元音检查逻辑。

import java.util.Arrays;
import java.util.List;

public class PigLatin {

    public static void main(String[] args) {

        List<String> words = Arrays.asList(
                "apricot",
                "banana",
                "lemon",
                "orange",
                "Input",
                "Test",
                "User"
        );

        for (int i = 0; i < words.size(); i++) {
            String word = words.get(i);

            if (startsWithVowel(word)) {
                System.out.println(word + "way");
            }
        }
    }

    private static boolean startsWithVowel(String word) {
        return word.matches("^[AEIOUaeiou].*$");
    }
}

您可以使用for-each loop替换索引for循环:

    for (String word : words) {
        if (startsWithVowel(word)) {
            System.out.println(word + "way");
        }
    }

如果你有兴趣,这里有一个functional way,更简洁:

    words.stream()
         .filter(word -> startsWithVowel(word))
         .forEach(word -> System.out.println(word + "way"));

打印:

apricotway
orangeway
Inputway
Userway

答案 3 :(得分:0)

这是一个小代码片段,为您提供更短的方式:)

public static void main(String[] args) {
    String[] strings={"Aello","Bello","iello","Oello","Zello"};
    List<String> al=Arrays.asList(strings); //creating a list with entities....Replace it with your ArrayList...
    String vowelsString="aeiouAEIOU"; 
    for(String s:al){  //for each String in List
        if(vowelsString.contains(s.charAt(0)+"")) //charAt(0) represents the beginning of string
            System.out.println(s+" way");
    }