4

私はコンピュータサイエンスコースの宿題をしています。タスクは、ユーザー入力を取得し、すべての母音を削除してから、新しいステートメントを出力することです。

私はこのコードで簡単にそれを行うことができることを知っています:

string.replaceAll("[aeiou](?!\\b)", "")

しかし、私のインストラクターは、結果を達成するためにネストされたifおよびelseifステートメントを使用することを望んでいます。現在、私は次のようなものを使用しています。

if(Character.isLetter('a')){
    'do something'
}else if(Character.isLetter('e')){
    'do something else'

ifしかし、 andelse ifステートメント内で何をすべきかわかりません。手紙を削除する必要がありますか?それとも、これを行うためのより良い方法はありますか?

これが私の宿題であると見て、私は完全な答えだけのヒントを望んでいません。ありがとう!

4

5 に答える 5

7

彼が望んでいるのは、文字列を読み、新しい空の文字列を作成し(それを呼び出しますs)、入力をループして、母音ではないすべての文字を追加することだと思いますs(これにはifステートメントが必要です)。次に、の内容を印刷するだけですs


編集:StringBuilder文字列の連結を繰り返すとパフォーマンスが低下する可能性があるため、これにaを使用することを検討することをお勧めしますが、考え方は同じです。しかし、正直なところ、この種のことで目立った違いが生じるとは思えません。

于 2012-10-31T21:13:43.250 に答える
4
Character.isLetter('a')

Character.isLetter(char)は、指定した値が文字であるかどうかを示しますが、この場合は役に立ちません(「a」が文字であることはすでにわかっています)。

次のように、等式演算子、を使用して==、文字が「a」であるかどうかを確認することをお勧めします。

char c = ...
if(c == 'a') {
    ...
} else if (c == 'e') {
    ...
}

文字列内のすべての文字を複数の方法で取得できます。

于 2012-10-31T21:14:41.823 に答える
3

以下のように、それが母音であるかどうかを文字チェックで繰り返すことができると思います。

  define a new string 
  for(each character in input string)
    //("aeiou".indexOf(character) <0) id one way to check if character is consonant
    if "aeiou" doesn't contain the character  
      append the character in the new string
于 2012-10-31T21:20:25.783 に答える
3

O(n)時間でやりたいなら

  • 文字列の文字配列を繰り返し処理します
  • 母音を打った場合は、インデックスをスキップして、次の非母音文字を母音の位置にコピーします。
  • 2つのカウンターが必要になります。1つは文字列全体を反復処理し、もう1つは最後の母音の位置を追跡します。
  • 配列の最後に到達したら、母音トラッカーカウンターを確認します。母音の上にあるかどうかを確認します。そうでない場合は、新しい文字列をインデックス0から「vowelCounter-1」まで作成できます。

これをJavaで行う場合は、新しい文字列などを作成するために追加のスペースが必要になります。Cで行う場合は、文字列をnull文字で終了し、余分なスペースなしでプログラムを完了することができます。

于 2012-10-31T21:47:04.883 に答える
2

Character.isLetter('a')いつもそうなので、インストラクターがあなたに電話をかけてほしかったとは思いませんtrue

正規表現を使用せずに結果を作成する最も簡単な方法は、次のようなStringBuilderaとswitchステートメントを使用することです。

String s = "quick brown fox jumps over the lazy dog";
StringBuffer res = new StringBuffer();
for (char c : s.toCharArray()) {
    switch(c) {
        case 'a': // Fall through
        case 'u': // Fall through
        case 'o': // Fall through
        case 'i': // Fall through
        case 'e': break; // Do nothing
        default: // Do something
    }
}
s = res.toString();
System.out.println(s);

if次のように、これを同等のものに置き換えることもできます。

if (c!='a' && c!='u' && c!='o' && c!='i' && c!='e') {
    // Do something
}
于 2012-10-31T21:20:58.433 に答える