2016-11-14 5 views
2

文字列内の文字を別の文字に置き換えるコードを書いています。しかし、現在の私の割り当てでは、特定の形式のコードが必要です。私は以下のコードを実行しようとしました:私は、一般的にプログラミングにまだ比較的新しいですと charをメソッドに配置する文字列に変換しようとしました。どこが間違っていますか?

public String replaceLetter(String word, char letterToReplace, char replacingLetter) 
{ 
    letterToReplace = Character.toString(letterToReplace); 
    replacingLetter = Character.toString(replacingLetter); 
    word = word.replaceAll(letterToReplace, replacingLetter); 
    return word; 
} 

は、コード内の任意の非効率性を言い訳してください。私は最近、文字や文字列をもっと強く持っていたので、それらに関連する規則や特性の点では分かりません。私のコードのエラーは非論理的ですか?私が現在使用しているIDEは、グレーディングのための課題を収集する唯一の目的を持っているオンラインのものです。上のコードをコンパイルすると、return文が見つからないなどのエラーが出るので、信頼できるとは思いません。 IDE自体は非常に制限されており、switch文などのコンパイルができないため、できるだけシンプルにすることができればと思っています。しかし、私はIDEが最も正確なコーディングを認識することが分かっています。私はforステートメントでコーディングを試みました:

public String replaceLetter(String word, char letterToReplace, char replacingLetter) 
{ 
    for (int i = 0; i < word.length(); i++) 
    { 
     char ca = word.charAt(i); 
     if (ca == letterToReplace) 
     { 
      word = (word.substring(0,i)+ replacingLetter + word.substring(i+1)); 
     } 
    } 
    return word; 
} 

しかし、私もエラーに遭遇しました。私の構文を訂正する助けがあれば幸いです。

+0

_ "でも、私もエラーに遭遇しました。" – JLRishe

+0

コンパイラは、私のカッコの使用が間違っているか、for文が不正であると指摘しました。それをすることは知られていますが、私は自分のエラーが他の場所にあると信じています。 –

+3

答えでは、 'toString'を使用すると、結果は' String'であり、 'String'変数に代入する必要があることを示しています。 Javaは強く型付けされているため、異なる型のものを割り当てることで変数の型を変更することはできません。しかし、Javaには 'char'引数を許可する' replace'があるので、実際には文字列に変換する必要はありません:http://docs.oracle.com/javase/8/docs/api/java/lang/String .html#replace-char-char-。 – ajb

答えて

2

あなたは、あなたが(それがStringsを必要とする、charsを受け付けない)replaceAll機能にそれらのcharsを渡している、既存のcharsからCharacter.toStringで作成したあなたのStringsを割り当てるしようとしています。これにあなたのコードを変更してみてください:

public String replaceLetter(String word, char letterToReplace, char replacingLetter) 
    { 
     String letterToReplaceAsString = Character.toString(letterToReplace); 
     String replacingLetterAsString = Character.toString(replacingLetter); 
     word = word.replaceAll(letterToReplaceAsString, replacingLetterAsString); 
     return word; 
    } 

編集:AJBが指摘したように、また、あなたの元char周囲に渡しreplace(代わりのreplaceAll)を呼び出して、あなたのStringsを割り当てるステップをスキップすることができます。 replaceはまだcharの出現をすべて置き換えることに注意してください:

return word.replace(letterToReplace, replacingLetter); 
+0

私は今、両方のアドバイスに感謝しています。私は次の任務のためにそれらを覚えておきます。 –

+0

問題はありません。うれしく思っています。 :) – Gulllie

0

あなたletterToReplacereplacingLetter変数が文字型であり、Character.toStringメソッドは文字列を返すよう、あなたが彼らに文字列を割り当てています。 変数のタイプを文字列に変更すると、うまくいくでしょう。

関連する問題