2017-12-15 1 views
1

Ich möchte die Vokale eines String Großbuchstaben machen. Hier ist das Verfahren für sie:Make char Großbuchstaben in String

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; 
} 

Die „if“ Anweisung eines Vokal abholen, aber ich kann nicht herausfinden, wie es in Großbuchstaben zu machen. IntelliJ sagt, dass die Ergebnisse von .toUpperCase und .Replace beide ignoriert werden. Könnte jemand bitte erklären, warum diese Methoden ignoriert werden, und vielleicht auch mit diesem Code in die richtige Richtung weisen?

Antwort

1

IntelliJ sagt, dass die Ergebnisse dieser Operationen ignoriert werden, da Zeichenfolgen und Zeichen in Java unveränderlich sind. Das Ergebnis jeder auf ihnen ausgeführten Operation muss wieder die Variablen zugewiesen werden, z.B .:

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

Was das eigentliche Programm, es ist ausreichend, um eine Schleife über ein Array von Vokalen, und verwenden Sie String.replace(char old, char new) für jeden Vokal. Der Vorgang wird alle Vorkommen dieser Vokal im String ersetzen:

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

Wow, ich kann nicht glauben, dass das alles war, was benötigt wurde. Ich verstehe es jetzt, Strings und Chars brauchen wegen ihrer Unveränderlichkeit grundsätzlich eine spezielle Behandlung. Es macht jetzt viel mehr Sinn. Danke, Robby !! –

-1

Ihr Code nicht die ursprüngliche Zeichenfolge aktualisieren, die als Eingabe genommen wird. Die ersetzen Methode ändert Ihre Zeichenfolge und gibt eine Zeichenfolge, die Sie nicht zurück zuweisen, an die Eingabe zurück. Auch die Character.toUppercase(); Methode gibt das Zeichen zurück, das Sie ersetzen müssen.

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); 
} 

Ein einfacher Weg, um das oben genannte zu tun.

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

Kann ich wissen, warum meine Antwort abgelehnt wurde? – Abhishek