-2

私はこれをどのように表現するか完全にはわかりません。いくつかの文字列の1つが変数に存在するかどうかを確認する方法を知りたいです。私はこれがうまくいくと言われました、しかしそれは私が期待することをしません。

       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番目の文字をチェックする意味はありません-事前にチェックして、結果を保存してください
  2. .split("")文字配列だけが必要な場合は使用しないでください
  3. whileループで繰り返すのではなく、forループを使用する

これが私がそれを書く方法です:

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

これが私の解決策です。O(n)時間計算量であるcharAt(int index)の代わりに使用し、sではなくを比較すると高速です。splitcharsString

    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 に答える
0

使用しました| ||の代わりに(ビット単位のOR)(論理OR)

'条件1または条件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 に答える