Java 如何反转已反转的字符串?

Java 如何反转已反转的字符串?,java,Java,我制作了一个程序,让用户输入一个单词、一个短语或一个句子,然后将其反转并显示结果 我的问题是,当我运行它时,它确实会反转它,但它会反转单词,而我所要做的就是保持输入的单词不变,然后只反转它们 这是我目前拥有的 //import statements import java.util.*; //for scanner class // class beginning class WordReverser { public static void main(String[] args

我制作了一个程序,让用户输入一个单词、一个短语或一个句子,然后将其反转并显示结果

我的问题是,当我运行它时,它确实会反转它,但它会反转单词,而我所要做的就是保持输入的单词不变,然后只反转它们

这是我目前拥有的

//import statements
import java.util.*;     //for scanner class


// class beginning

class  WordReverser {
public static void main(String[] args ) {

    //Declare variables area
    String original, reverse = "";
    Scanner in = new Scanner(System.in);
    boolean blankString = false;
    public StringBuilder reverse();

    // beginning message to user to explain the program
    System.out.println("Welcome to my reverse word program!");
    System.out.println("Please enter in a word or a phrase and see it reversed: ");

    //main code and calculations to do
    while (!blankString){
        System.out.println("Enter a string to reverse");//Collect inputs from user.
        original = in.nextLine();
        if (original.equals(""))
        {
            blankString = true ;
        }
        else {
            int length = original.length();

            for ( int i = length - 1 ; i >= 0 ; i-- )
                reverse = reverse + original.charAt(i);

            System.out.println("Reverse of entered string is: "+reverse);//Output results here
        }
    }

    //End program message
    System.out.println();
    System.out.println("Hope you enjoyed using this program!");
}// end main method


 }// end class

显然这是一个家庭作业问题,所以我会给你一个正确的方向,但我不会给出完整的答案。您需要一次反转一个单词,而不是整个字符串

您需要实现此伪代码的东西:

original = getStringFromUser();
words[] = breakIntoWords(original);
foreach word in words {
    reversed = reverse(word);
    print reversed;
}

reverse(string word)
{
    return reversed version of the input
}

breakIntoWords(sting sentence)
{
    return array with each word as a sep.element
}

如果你阅读文档,你可能会发现
reverse
breakintoords
已经为你准备好了,所以你只需要调用正确的方法。

显然是一个家庭作业问题,所以我会给你一个正确的方向,但我不会给出完整的答案。您需要一次反转一个单词,而不是整个字符串

您需要实现此伪代码的东西:

original = getStringFromUser();
words[] = breakIntoWords(original);
foreach word in words {
    reversed = reverse(word);
    print reversed;
}

reverse(string word)
{
    return reversed version of the input
}

breakIntoWords(sting sentence)
{
    return array with each word as a sep.element
}

如果你阅读文档,你可能会发现
reverse
breakintoords
已经为你准备好了,所以你只需要调用正确的方法。

解决问题的关键是学会如何将它们分解成更容易解决的小块。这是一种很好的解决问题的技术,也是编程的核心

你知道如何颠倒句子中的字母。您希望反转每个单词中的字母,但保留单词的原始顺序。或者,换一种说法,你想:

  • 把句子分成几个单独的单词
  • 把每个单词一个接一个地倒转过来
  • 把这些单词重新组合成一个句子

  • 希望这些步骤中的每一步都更易于管理。如果没有,想想如何将它们分解成更小的步骤。例如#2也许你需要一个循环,然后是循环中的某个东西。

    解决问题的关键是学习如何将问题分解成更容易解决的小部分。这是一种很好的解决问题的技术,也是编程的核心

    你知道如何颠倒句子中的字母。您希望反转每个单词中的字母,但保留单词的原始顺序。或者,换一种说法,你想:

  • 把句子分成几个单独的单词
  • 把每个单词一个接一个地倒转过来
  • 把这些单词重新组合成一个句子

  • 希望这些步骤中的每一步都更易于管理。如果没有,想想如何将它们分解成更小的步骤。例如,例如#2,也许你需要一个循环,然后是循环中的某个东西。

    我认为有两种方法可以快速处理这个问题,如果不是太优雅的话

  • 最简单的方法是创建第三个变量,称为String originalWords,它从循环中的stdin追加到

  • 重复使用现有的“原始”字符串,执行与上面相同的操作,然后在第二个循环中反向循环它


  • 我认为有两种方法可以很快解决这个问题,如果不是太优雅的话

  • 最简单的方法是创建第三个变量,称为String originalWords,它从循环中的stdin追加到

  • 重复使用现有的“原始”字符串,执行与上面相同的操作,然后在第二个循环中反向循环它


  • 您可以将输入字符串拆分为单独的单词数组,然后分别反转数组中的每个单词


    您可以将输入字符串拆分为单独的单词数组,然后分别反转数组中的每个单词


    是否要颠倒词序?在这种情况下,必须在“”处拆分输入字符串

    为此,您的else块应该是

    String[] words = original.split(" ");
    for(int i = words.length-1; i>=0; i--)
        reverse += words[i] + " ";
    System.out.println("Reverse of entered string is: "+reverse);
    

    你想颠倒词序吗?在这种情况下,必须在“”处拆分输入字符串

    为此,您的else块应该是

    String[] words = original.split(" ");
    for(int i = words.length-1; i>=0; i--)
        reverse += words[i] + " ";
    System.out.println("Reverse of entered string is: "+reverse);
    

    为了解决您的问题,我对您的代码进行了一些重构。首先,我将您的反向逻辑放在一个单独的方法中

    public static String reverse(String strToReverse) {
    
            String original = strToReverse, reverse = "";
    
            boolean blankString = false;
    
            if (original.equals(""))
            {
                    blankString = true ;
             }
             else {
                int length = original.length();
    
                for ( int i = length - 1 ; i >= 0 ; i-- )
                     reverse = reverse + original.charAt(i);
             }
    
            return reverse;
    
    }
    
    其次,我将字符串拆分为单词(假设单词之间用简单空格分隔)

    publicstaticvoidmain(字符串[]args){
    //声明变量区域
    字符串原件,反面为“”;
    扫描仪输入=新扫描仪(系统输入);
    布尔blankString=false;
    //公共字符串生成器反向();
    //向用户解释程序的开始消息
    System.out.println(“欢迎使用我的反向word程序!”);
    System.out.println(“请输入一个单词或短语,并将其反转:”);
    //主要代码和要做的计算
    while(!blankString){
    System.out.println(“输入要反转的字符串”);//收集用户的输入。
    原始=in.nextLine();
    if(原始值等于(“”)
    {
    blankString=true;
    }
    否则{
    String[]words=original.split(“”);
    String[]reversedWords=新字符串[words.length];
    StringBuilder reverseBuilder=新StringBuilder();
    for(int index=0;index
    下面是一个执行示例:


    为了解决您的问题,我对您的代码进行了一些重构。首先,我将您的反向逻辑放在一个单独的方法中

    public static String reverse(String strToReverse) {
    
            String original = strToReverse, reverse = "";
    
            boolean blankString = false;
    
            if (original.equals(""))
            {
                    blankString = true ;
             }
             else {
                int length = original.length();
    
                for ( int i = length - 1 ; i >= 0 ; i-- )
                     reverse = reverse + original.charAt(i);
             }
    
            return reverse;
    
    }
    
    其次,我将字符串拆分为单词(假设单词之间用简单空格分隔)

    publicstaticvoidmain(字符串[]args){
    //声明变量区域
    字符串原件,反面为“”;
    扫描仪输入=新扫描仪(系统输入);
    布尔blankString=false;
    //公共架线工