颠倒我的话中的字母而不颠倒句子中的单词

Reverse letters in my words without reversing the words in the sentence

此代码应将我输入的“123ab 445 Hello”反转为 "ba321 544 olleh",但是,我得到 "olleh 544 ba321" 作为我的输出。为什么会这样?

import java.util.StringTokenizer;
import java.util.Scanner;

public class LessNaiveEncryption {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        System.out.print("Provide an input sentence: ");
        String userInput = keyboard.nextLine();
        StringTokenizer strTokenizer = new StringTokenizer(userInput, " ", true);
        System.out.print("The output sentence is   : ");
        while (strTokenizer.hasMoreTokens()) {
            strTokenizer.nextToken();
        }
        StringBuilder blob = new StringBuilder(userInput);
        blob.reverse();
        System.out.println(blob);
        System.out.print("\n");

    }
}

您的主要问题是您没有对 StringTokenizer 执行任何操作。您正在遍历结果,但没有反转它们。将反向放在循环中并打印出结果。

    Scanner keyboard = new Scanner(System.in);
    System.out.print("Provide an input sentence: ");
    String userInput = keyboard.nextLine();
    StringTokenizer strTokenizer = new StringTokenizer(userInput, " ", true);
    System.out.print("The output sentence is   : ");
    while (strTokenizer.hasMoreTokens()) {
        String str = strTokenizer.nextToken();
        StringBuilder blob = new StringBuilder(str);
        System.out.print(blob.reverse());
    }

    System.out.print("\n");
 }

您正在反转整个字符串,拆分它然后反转每个拆分:

String[] split = userInput.split(" ");
String result = "";
for(String s : split){
    result += new StringBuilder(s).reverse().append(" ").toString();
}
System.out.println(result);