任务描述

本关任务:接收给定字符串,将字符串中的各个单词的字母顺序反转,例如:


1. oT eb ro ton ot eb

反转后变为:


1. To be or not to be

相关知识

StringBuffer类

StringBuffer 类和 String 类一样,也用来定义字符串,它们之间的区别在于: 1.由于 StringBuffer 的内部实现方式和 String 不同,StringBuffer 在进行字符串处理时(比如字符串拼接),不生成新的对象,所以在内存使用上,StringBuffer 类要优于 String 类。

2.StringBuffer 长度和内容可变,String 不可变(比如 StringBuffer 提供一个 append 方法在原字符串对象上追加字符串长度)。

StringBuffer类的对象的初始化

通常情况下使用构造方法对其进行初始化:

1. StringBuffer stringBuffer = new StringBuffer();

这样初始化出的 StringBuffer 对象是一个空的对象。

如果需要创建带有内容的 StringBuffer 对象,则可以使用:

1. StringBuffer stringBuffer = new StringBuffer("Hello World!");

这样初始化出的 StringBuffer 对象的内容就是字符串"Hello World!"。

StringBuffer类的常用方法

StringBuffer 类中存在很多和 String 类一样的方法,这些方法在功能上是完全一样的。但它也有一些独特的方法,用于帮助我们更方便的实现某些功能。

append()方法

append()方法的作用是追加内容到当前 StringBuffer 对象的末尾,类似于字符串的连接,请看示例:

1. StringBuffer stringBuffer = new StringBuffer("Hello");
2. stringBuffer.append("World!");
3. System.out.println(stringBuffer);

执行结果为:

1. HelloWorld!

reverse()方法

reverse()方法将把当前字符序列反转后返回,请看示例:

1. StringBuffer stringBuffer = new StringBuffer("abc");
2. System.out.println(stringBuffer.reverse());

执行结果为:

    1. cba

    insert(int index,context)方法

    insert() 方法的作用是在 StringBuffer 对象中的指定索引位置插入内容(整数、字符串、字符等),然后形成新的字符串。例如:

    1. StringBuffer sb = new StringBuffer(“TestString”);
    2. // 把false插入原字符串中,false在新字符串中的索引值为4
    3. sb.insert(4,false); 
    4. System.out.println(sb);

    执行结果为:

    1. TestfalseString

    setCharAt(int index,char c)方法

    setCharAt() 方法的作用是在 StringBuffer 对象中的指定索引位置插入一个字符,然后形成新的字符串。例如:

    1. StringBuffer sb = new StringBuffer(“TestString”);
    2. // 把字符y插入原字符串中,y在新字符串中的索引值为0
    3. sb.setCharAt(0,'y'); 
    4. System.out.println(sb);

    执行结果为:

    1. yTestString

    charAt(int index)方法

    charAt() 方法的作用是获取指定索引的字符。例如:


    1. StringBuffer sb = new StringBuffer(“TestString”);
    2. 
    3. System.out.println(charAt(0));

    执行结果为:


    1. T

    delete(int start,int end)方法

    delete() 方法的作用是删除指定索引范围内的字符。例如:


    1. StringBuffer sb = new StringBuffer(“TestString”);
    2. // 索引值含左不含右
    3. sb.delete(0,2);
    4. System.out.println(sb);

    执行结果为:

    1. stString

    replace(int start,int end,String str)方法

    replace() 方法的作用是把指定索引范围的字符串替换成指定字符串。例如:

    1. StringBuffer sb = new StringBuffer(“TestString”);
    2. // 索引值含左不含右
    3. sb.replace(0,2,"aaaa");
    4. System.out.println(sb);

    执行结果为:

    1. aaaastString

    StringBuffer对象和String对象互转

    注意,StringBuffer 和 String 属于不同的类型,也不能直接进行强制类型转换,下面的代码都是错误的:

    1. StringBuffer s = "abc"; // 赋值类型不匹配
    2. StringBuffer s = (StringBuffer)"abc"; // 不存在继承关系,无法进行强转

    正确的对象之间互转代码如下:

    1. String string1 = "Hello World!";
    2. // String转换为StringBuffer
    3. StringBuffer stringBuffer = new StringBuffer(string1);
    4. // StringBuffer转换为String
    5. String string2 = stringBuffer.toString(); 
    import java.util.Scanner;
    
    public class Str {
    
        public static void main(String[] args) {
    
                // 请在Begin-End间编写代码
                /********** Begin **********/
    
                // 第一步:接收给定的字符串
                Scanner input = new Scanner(System.in);
                String str = input.nextLine();
                // 第二步:创建StringBuffer对象
                StringBuffer strBf;
                // 第三步:切割字符串
                String[] array = str.split(" ");
                // 第四步:反转单词
                System.out.print("反转后的字符串:");
                for(String i : array){
                    strBf = new StringBuffer(i);
                    strBf = strBf.reverse();
                // 第五步:输出反转后的字符串
                System.out.print(strBf + " ");
                }
                /********** End **********/
    
        }
    }