如何将if语句中的多个字符串与Java进行比较?

时间:2012-09-01 12:31:58

标签: java string if-statement

我不完全确定如何说出来。我想知道如何检查变量中是否存在多个字符串中的一个。 我被告知这会起作用,但是没有按照我的预期进行。

       String lett2array=arr[i];
       String[] lett=lett2array.split("");
       int y = 0;
       while(y != lett.length){
           if(lett[1].equals("a")||lett[1].equals("e")||lett[1].equals("i")||lett[1].equals("o")||lett[1].equals("u")){
               inputField.append(" \n"+lett[y]);
           }

6 个答案:

答案 0 :(得分:3)

您的代码以非常迂回的方式编写。

  1. 每次循环检查字符串的第二个字母是没有意义的 - 事先检查一下,然后存储结果
  2. 当你想要的只是一个字符数组
  3. 时,不要使用.split("")
  4. 使用for循环而不是使用while循环进行迭代
  5. 以下是我写的方式:

    String str = arr[i];
    char[] letters = str.toCharArray();
    
    boolean secondLetterIsVowel = letters[1] == 'a'
                               || letters[1] == 'e'
                               || letters[1] == 'i'
                               || letters[1] == 'o'
                               || letters[1] == 'u';
    for(char letter : letters) {
        if(secondLetterIsVowel) {
            inputField.append(" \n" + letter);
        }
        //...
    }
    

答案 1 :(得分:1)

您应该使用||,而不是|

if(lett[1].equals("a") || lett[1].equals("e") || lett[1].equals("i") || lett[1].equals("o") || lett[1].equals("u")) {
    inputField.append(" \n"+lett[y]);
}

|是按位或运算符,而||是短路逻辑或运算符。

答案 2 :(得分:1)

使用Apache Commons:

StringUtils.startsWithAny(String  string, String [] searchStrings) 

更多信息:http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html

此致

答案 3 :(得分:0)

你用过了(按位OR)代替|| (逻辑或)

每当你想'测试条件一或条件2'时,使用'||'。

答案 4 :(得分:0)

如果你有这样的事情:

if( a.equals( b ) || a.equals( c ) || a.equals( d ) )

您可以将其重写为:

if( Arrays.asList( b,c,d).contains( a ) )

当然,如果b,c和d是常量,你也可以将列表创建为常量。

答案 5 :(得分:0)

这是我的解决方案。使用charAt(int index)代替split,这是O(n)时间复杂度,并且比较chars,而不是String,它会更快。

    String currString = arr[i]; // Get the current string
    char secondLet = currString.charAt(1); // Get the second letter

    // chars are primitive, so == will suffice
    if(secondLet == 'a' || secondLet == 'e'
        || secondLet == 'i' || secondLet == 'o' || secondLet == 'u') {
        // The second letter is a vowel!
        // Do whatever you want to do.......
        // I didn't understand if you wanted to output the whole String,
        // Or just the vowels. Whatever. Just do what you want.
    }