-2

我不完全确定如何措辞。我想知道如何检查变量中是否存在多个字符串之一。有人告诉我这会起作用,但它没有达到我的预期。

       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]);
           }
4

6 回答 6

3

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

  1. 每个循环都检查字符串的第二个字母是没有意义的 - 事先检查并存储结果
  2. .split("")当你想要的只是一个字符数组时不要使用
  3. 使用 for 循环而不是使用 while 循环进行迭代

我是这样写的:

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);
    }
    //...
}
于 2012-09-01T12:48:02.087 回答
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]);
}

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

于 2012-09-01T12:34:42.180 回答
1

使用 Apache Commons:

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

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

问候,

于 2012-09-01T12:35:26.977 回答
0

你用过| (按位或)而不是 || (逻辑或)

每当您想“测试条件一或条件 2”时,请使用“||”。

于 2012-09-01T12:34:49.020 回答
0

如果你有这样的事情:

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

您可以将其重写为:

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

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

于 2012-09-01T12:34:54.807 回答
0

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

    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.
    }
于 2012-09-01T12:46:26.980 回答