3

文字列を取り、その文字列をピグラチンに変換する必要があります。ピグラチンには3つのルールがあり、そのうちの1つは次のとおりです。

英単語が母音で始まる場合は、英単語 + ピグラタン バージョンの「yay」を返します。

したがって、startsWith() メソッドは配列ではなくパラメーターに文字列を使用するため、エラーが発生することを正直に期待してこれを実行しようとしました。

 public String pigLatinize(String p){
    if(pigLatRules(p) == 0){
        return p + "yay";
    }
}

public int pigLatRules(String r){
    String vowel[] = {"a","e","i","o","u","A","E","I","O","U"};
    if(r.startsWith(vowel)){
        return 0;
    }        
}

しかし、配列を使用できない場合は、このようなことをしなければなりません

if(r.startsWith("a")||r.startsWith("A")....);
     return 0;

非常に大量のスペースを占める y を含まないすべての母音をテストします。個人的には、かなり乱雑に見えると思います。

私がこれを書いているとき、私はどういうわけか反復を通してそれをテストすることを考えています.

 String vowel[] = new String[10];
 for(i = 0; i<vowel[]; i++){
     if(r.startsWith(vowel[i]){
         return 0;
     }

その繰り返しの試みが理にかなっているのかどうかはわかりません。

4

3 に答える 3

1

あなたのコード:

String vowel[] = new String[10];
for(i = 0; i<vowel[]; i++){
    if(r.startsWith(vowel[i]){
        return 0;
     }
}

実際にはうまくいくはずのソリューションに本当に近いです(実際に配列にいくつかの値を入れたと仮定します)。

どのような値を入力する必要がありますか。また、前述のように、母音のすべての可能な値を配列に入力できます。もちろん

String[] vowel={"a","A","e","E","i","I","o","O","u","U"};

これで、配列をループして(解決したように)、チェックを行いたいと思うでしょう:

public int pigLatRules(String r){
    final String[] vowels={"a","A","e","E","i","I","o","O","u","U"};
    for(int i = 0; i< vowels.length; i++){
        if(r.startsWith(vowels[i])){
             return 0;
         }
    }
    return 1;
}

ただし、これにはいくつかの改善点があります。いくつかはベストプラクティスであり、いくつかは単なる選択であり、いくつかはパフォーマンスです。

ベスト プラクティスとして、現在、この関数から int を返しています。この関数の結果をブール値に変更することをお勧めします (それらに遭遇していない場合は、調べることをお勧めします)。

選択に関しては、大文字と小文字の母音を含む配列を持たなければならないのは好きではないとおっしゃっています。さて、ここに少しの情報があります。文字列には多くのメソッドがありますhttp://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.htmlそのうちの1つは toLowerCase() です。これは、文字列全体を小文字にすると推測できます. 関数に渡す作業に対してこれを行うと、実行する必要があるチェックの量が半分になります。

他にもたくさんありますが、これはほんの少しです。

于 2012-11-02T13:49:54.613 に答える
1

これらすべての文字を HashSet に入れてから、ルックアップを実行して文字が有効かどうかを確認し、それに応じて 0 を返します。

HashSet の挿入/検索の例をいくつか見てください。それは簡単であるべきです。

お役に立てれば。

于 2012-11-02T07:59:38.467 に答える
0

すべての母音を文字列に入れ、テストしている単語の最初の文字を取得し、文字がすべての母音の文字列にあるかどうかを確認します。

于 2012-11-02T08:00:45.467 に答える