【问题标题】:Reverse letters in my words without reversing the words in the sentence反转我的话中的字母而不反转句子中的单词
【发布时间】:2016-01-26 19:42:33
【问题描述】:

此代码应将我输入的“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");

    }
}

【问题讨论】:

  • 使用调试器自己找出答案
  • 好吧,while 循环什么都不做,StringBuilder 用于反转 整个 字符串,那么您期望什么?
  • 两个有效点。直到今天早上我才知道如何使用调试器。下次我一定会实施的。

标签: java tokenize stringbuilder


【解决方案1】:

您的主要问题是您没有对 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");
 }

【讨论】:

  • 啊,我明白了。 . .这是我第一次玩弄这些概念,所以谢谢你的澄清。 :)
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多