2017-12-15 6 views
1

文字列の母音を大文字にしたいと考えています。文字列内で大文字にする

public static String LetterChanges(String str) { 

     char[] strChar = str.toCharArray(); 

     for (int i =0; i < str.length(); i++){ 
      char ch = str.charAt(i); 

      if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'){ 
       Character.toUpperCase(ch); 
       str.replace(strChar[i], ch); 
      } 
     } 
    return str; 
} 

文は母音をピックアップしますが、私はそれを大文字にする方法を見つけ出すことができない「場合」ということ:ここではそのための方法があります。 IntelliJは、.toUpperCaseと.replaceの結果はどちらも無視されると述べています。誰かが、なぜそれらのメソッドが無視されているのかを説明してください、そして、おそらく私はこのコードで正しい方向に向けるでしょうか?

答えて

1

IntelliJは、文字列と文字がJavaでは不変であるため、これらの操作の結果は無視されると言います。その上で実行される任意の演算の結果は、例えば:実際のプログラムとして

ch = Character.toUpperCase(ch); 
str = str.replace(strChar[i], ch); 

は、それが母音の配列をループに十分だ、バック変数に割り当てられ、すべての母音ためString.replace(char old, char new)使用する必要があります。文字列中のその母音のすべての部分が置換されます。

String string = "Whatever string"; 
char[] vowels = new char[]{'a', 'e', 'i', 'o', 'u'}; 

for (char vowel : vowels) { 
    string = string.replace(vowel, Character.toUpperCase(vowel)); 
} 

System.out.println(string); // WhAtEvEr strIng 
+1

うわー、私はそれがすべて必要だったとは思えません。私は今それを得る、文字列と文字は基本的にその不変のために特別な治療が必要になるだろう。それは実際に今より多くの意味があります。ありがとう、Robby! –

-1

入力として入力された元の文字列は、コードで更新されません。 メソッドを置き換えると、文字列が変更され、入力に割り当てられていない文字列が返されます。また、Character.toUppercase();メソッドは、置き換えなければならない文字を返します。

public static void main(String[] args) { 
    String str = "This is my input string"; 
    char[] strChar = str.toCharArray(); 
    for (int i = 0; i < str.length(); i++) { 
     char ch = str.charAt(i); 
     if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') { 
      str = str.replace(strChar[i], Character.toUpperCase(ch)); 
     } 
    } 
    System.out.println(str); 
} 

これより簡単な方法です。

public static void main(String[] args) { 
     String input = "This is my input string"; 
     System.out.println(input.replace("a", "A").replace("e", "E").replace("i", "I").replace("o", "O").replace("u", "U")); 
} 
+0

なぜ私の答えが下落したのか分かりますか? – Abhishek

関連する問題