18

このJavaコードは私に問題を引き起こしています:

    String word = <Uses an input>
    int y = 3;
    char z;
    do {
        z = word.charAt(y);
         if (z!='a' || z!='e' || z!='i' || z!='o' || z!='u')) {
            for (int i = 0; i==y; i++) {
                wordT  = wordT + word.charAt(i);
                } break;
         }
    } while(true);

単語の 3 番目の文字が非母音かどうかを確認したいのですが、そうであれば、非母音とその前の文字を返すようにします。母音の場合は、文字列内の次の文字をチェックし、母音でもある場合は、母音以外が見つかるまで次の文字をチェックします。

例:

word = Jaemeas の場合、wordT must = Jaem

例 2:

word=Jaeoimus then wordT must =Jaeoims

問題は私のifステートメントにあります。その1行のすべての母音をチェックする方法がわかりません。

4

8 に答える 8

66

母音をチェックするきれいな方法:

public static boolean isVowel(char c) {
  return "AEIOUaeiou".indexOf(c) != -1;
}
于 2013-10-03T13:57:43.850 に答える
3

正規表現を使ったアプローチはどうですか?適切なパターンを使用すると、グループを使用して Matcher オブジェクトから結果を取得できます。以下のコード サンプルでは、​​m.group(1) を呼び出すと、パターン マッチが存在する限り、探している文字列が返されます。

String wordT = null;
Pattern patternOne = Pattern.compile("^([\\w]{2}[AEIOUaeiou]*[^AEIOUaeiou]{1}).*");
Matcher m = patternOne.matcher("Jaemeas");
if (m.matches()) {
    wordT = m.group(1);
}

同じ目標を達成するためのアプローチが少し異なるだけです。

于 2013-10-03T15:01:23.087 に答える
0
 String word="Jaemeas";
 String wordT="";
        int y=3;
        char z;
        do{
            z=word.charAt(y);
             if(z!='a'&&z!='e'&&z!='i'&&z!='o'&&z!='u'&&y<word.length()){
                for(int i = 0; i<=y;i++){
                    wordT=wordT+word.charAt(i);
                    }
            break;
            }
           else{
                 y++;
             }

        }while(true);

これが私の答えです。

于 2013-10-03T14:09:38.220 に答える