2017-11-07 3 views
2

私はコーディング試験のために手作業でコードを書くことを試みていますが、サンプルの質問の1つは指定された文字列の最初の母音のインデックス。存在しない場合は-1を返します。与えられた文字列中の母音の最初のインデックスを見つける、そうでなければ-1を返す

私はこれをeclipseに入れてデバッグしました。なぜこれがうまくいかないのか分かりません。私は出力として101を得続けます。最初はインデックス変数を使用しませんでした。if文にはword.charAt(i)を返します。私はそれを変えようとしましたが、何もしませんでした。あなたがこれを書くための簡単な方法であるもの、これを書かなければならなかった場合

(試験の目的のために、彼らは私たちがちょうど小文字の母音を使用していた)

も?

public static int firstVowel(String word) { 
    for (int i = 0; i < word.length(); i++) { 
     int index; 

     if (word.charAt(i) == 'a' || word.charAt(i) == 'e' || word.charAt(i) == 'i' || word.charAt(i) == 'o' 
       || word.charAt(i) == 'u') { 
      index = word.charAt(i); 
      return index; 
     } 
    } 

    return -1; 

} 
+1

String.indexOfはコードを読みやすくします。 –

+0

私はそれをif文に入れますか?私はそれを以前に使ったとは思わない。 – valcyon

+0

いいえ、コードは '(擬似コード)' min(indexOf( 'a')、indexOf( 'e')...) 'に絞り込まれます。しかし、このような 'min'メソッドはあらかじめ定義されていません(' Math.min() 'は2つの引数しか取らないため、大括弧が重なります)。したがって、個々の文字に対して '-1'を守らなければなりません。そうすれば、読めないコードの可能性が最も高くなります。 – Izruo

答えて

0

charのint repesentationを取得していますが、実際にはこれがcharを見つけた位置を示すので、実際に戻りたいと思います。

+0

うわー、私は気まずいと感じる....ありがとう! – valcyon

0

ここでの問題は、整数を格納するindexに文字値を返すword.charAt(i)を格納することです。

私は実際に格納しているものが文字のASCII値であることを整数変数に格納すると信じています。 101はASCIIテーブルの 'e'を表しているので、ここではインデックスiで 'e'を検出してから、インデックスにASCII値を格納してインデックスを返します。

問題を解決するために、実際にはインデックス変数はまったく必要ありません。 if文の中でiを返すだけです。

関連する問題