Java 反转整个字符串并反转其中的每个单词

Java 反转整个字符串并反转其中的每个单词,java,methods,Java,Methods,我必须用两个类编写一个代码,一个类反转一个字符串改变位置,例如 我爱你变成uoyevoli 另一个类在不改变位置的情况下反转字符串,例如 我爱你变成了我爱你 我有一个小的代码,但是如果调用这些类中的方法,我没有办法 我现在所拥有的只是以第一种方式反转字符串的代码。欢迎任何帮助 class StringReverse2{ public static void main(String[] args){ String string="I love you";

我必须用两个类编写一个代码,一个类反转一个字符串改变位置,例如

我爱你
变成
uoyevoli

另一个类在不改变位置的情况下反转字符串,例如

我爱你
变成了
我爱你

我有一个小的代码,但是如果调用这些类中的方法,我没有办法

我现在所拥有的只是以第一种方式反转字符串的代码。欢迎任何帮助

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

        String string="I love you";
        String reverse = new StringBuffer(string).  //The object created through StringBuffer is stored in the heap and therefore can be modified
        reverse().toString();                       //Here the string is reversed

        System.out.println("Old String:"+string);   //Prints out I love you
        System.out.println("New String : "+reverse);//Prints out the reverse  that is "uoy evol I"
    }
}

我不会向您展示完整的解决方案,但会指导您,以下是一种方法:

  • split
    根据空格分割字符串(
    yourString.split(\\s+);
  • 迭代生成的数组并反转每个字符串(可以使用与第一个任务相同的方法)
  • 从数组构造一个新字符串

还有更多的解决方案,请访问并点燃您的创意之火

您可以在StringBuilder对象上使用reverse()方法

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

        String string="I love you";
        String reverse = new StringBuilder(string).reverse().toString();    

        StringBuilder secondReverse = new StringBuilder();
        for (String eachWord : string.split("\\s+")){
            String reversedWord = new StringBuilder(eachWord).reverse().toString();
            secondReverse.append(reversedWord);
            secondReverse.append(" ");

        }

        System.out.println("Old String:"+string);   //Prints out I love you
        System.out.println("New String : "+reverse);//Prints out the reverse  that is "uoy evol I"
        System.out.println("Reversed word two: " + secondReverse.toString());
    }
}

API:

只是一个建议,避免使用
保留关键字
作为变量/对象名称。有时它可能会导致意外行为。@PrerakSola:例如?我当然希望它不会“有时”导致“意外”行为;相反,它总是会导致预期的编译器错误。@njzk2-例如
字符串
@njzk2,-@PrekSola所说的是避免
字符串
数组列表数组列表
。这使它更容易阅读。当然
string
所有小写字母都不是保留字,但它只是所有小写字母中的保留字。退房这是一个很好的惯例。我没有投反对票,但再看一遍问题,你没有回答。基本上,你在答案中的代码是他在问题中唯一的工作部分。您没有仔细阅读问题。谢谢-更改为反映问题现在是正确的,+1,但下次尝试不要为没有显示最小努力的问题提供完整的解决方案。@Marounnaroun他有自己编写的代码,我称之为显示“最小努力”。虽然,这个问题的答案很可能在网上找到……为什么你要使用
拆分(\\s+”)
而不是
拆分(“”
?@Ascalonian因为它更通用,
是一个匹配单个空格的正则表达式,
\\s+
匹配一个或多个空格,所以它可以像
“abc___________;hi jk”
(其中
是一个空格)