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

时间:2015-04-15 23:34:27

标签: java

我创建了一个程序,允许用户输入单词或短语或句子并反转它并显示结果。

我的问题是,当我运行它时,它会反转它,但当我想要做的就是保留输入的单词并将它们反转时,它会反转单词。

这是我目前的

//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

6 个答案:

答案 0 :(得分:2)

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

你需要一些能够实现这个伪代码的东西:

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
}

如果你阅读了文档,可能会发现reversebreakIntoWords已经存在,所以你只需要调用正确的方法。

答案 1 :(得分:2)

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

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

  1. 将句子分成单独的单词。
  2. 逐个翻转每个单词。
  3. 将这些单词组合成一个句子。
  4. 希望每个步骤都更易于管理。如果没有,请考虑如何将它们分解成更小的步骤。例如,对于#2,你可能需要一个循环,然后在循环内部。

答案 2 :(得分:1)

你想颠倒单词顺序吗?在这种情况下,您必须将输入字符串拆分为“”。

要做到这一点,你的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);

答案 3 :(得分:0)

如果不是太优雅的话,我会看到两种快速处理的方法

  1. 最简单的方法是创建一个名为String originalWords的第三个变量,它从循环中的stdin附加。

  2. 重复使用现有的“原始”字符串,并执行与上述相同的操作,然后在第二次循环中将其反向循环。

答案 4 :(得分:0)

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

Refer this for code.

答案 5 :(得分:0)

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

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;

}

其次我将你的字符串分成单词(假设单词用简单的空格分隔)

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 {

            String[] words = original.split(" ");
            String[] reversedWords = new String[words.length];
            StringBuilder reverseBuilder = new StringBuilder();
            for (int index = 0; index < words.length; index++) {
                reversedWords[index] = reverse(words[index]);
                reverseBuilder.append(reversedWords[index] +  " ");
            }


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

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

这是一个执行示例:

reverse