2016-04-15 6 views
0

Also mache ich ein Programm, wo der Fall jedes Buchstabens invertiert ist. Wenn Sie "Hello" eingeben, wird "hELLO" ausgegeben. Ich bin mir bewusst, dass alles, was ich mache, nicht funktionieren wird, aber mir ist nicht ganz klar, WARUM es nicht funktionieren wird.Java: StringBuilder setCharAt funktioniert nicht richtig

public static void main(String [] args){ 

    Scanner keyboard = new Scanner(System.in); 
    keyboard.useDelimiter(System.getProperty("line.separator")); 
    char letter; 
    char newLetter; 

    String strLetter; 
    System.out.print("Phrase: "); 
    String phrase = keyboard.next(); 
    StringBuilder aWord = new StringBuilder(phrase); 
    int wordLength = phrase.length(); 

    //loop through each letter 
    for (int x = 0; x < wordLength; x++) { 
    letter = phrase.charAt(x); 

    //if letter is uppercase, set newLetter to lowercase and vice versa. 
    if (Character.isUpperCase(letter)) { 
     newLetter = Character.toLowerCase(letter); 
    } else { 
     newLetter = Character.toUpperCase(letter); 
    } 
    //When I print new letter here, it shows as the updated version 
    //However, setCharAt is not actually updating, as seen by 
    //the "System.out.print(phrase);" line outside of the loop. 
    aWord.setCharAt(x,newLetter); 
    System.out.print(newLetter); 
    } 

    System.out.println(); 
    System.out.print(phrase); 
    } 
+1

So erstellen Sie 'aWord', aber nie drucken. Woher weißt du, dass setCharAt nicht funktioniert? – ControlAltDel

+0

Ist es nicht einfacher, [WordUtils # swapCase] ​​zu verwenden (https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/WordUtils.html#swapCase (java. lang.String))? –

Antwort

3

Es funktioniert, aber am Ende Sie die ursprüngliche Zeichenfolge gedruckt werden in variablen phrase und Sie wollen wahrscheinlich die konvertierte Zeichenfolge in variabler aWord drucken.

+0

Das ist es! Vielen Dank. Wie du dir vorstellen kannst, spiele ich zum ersten Mal mit StringBuilder. – user230250