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);
}
So erstellen Sie 'aWord', aber nie drucken. Woher weißt du, dass setCharAt nicht funktioniert? – ControlAltDel
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))? –