编写一个方法,将一段文本中的各个单词的字母顺序翻转题

1.任务介绍

编写一个方法,将一段文本中的各个单词的字母顺序翻转, 例如:“I like writing code best”,将变成"I ekil gnitirw edoc tseb"。

2.思路

① 通过空格将字符串进行切割,保存为字符串类型的数组。
注意:第一个字符或者最后一个字符为空时,造成切割份数不符合规律,这里再遍历时跳过这两个字符,不影响储存字符串;
② 将存储分割后字符串数组,通过遍历,将每段字符串进行翻转,存入新的字符串数组;
注意:这里可以使用StringBuilder或者StringBuffer的append方法对反转后的字符串进行拼接,而初学的我使用了浪费内存的直接字符串拼接,这样会造成字符串常量池大量字符串占用内存无法回收,不推荐使用;

3.用到的类及方法

(1)String类

①用到的构造方法

·String()// 返回String类型,初始化为空字符序列;
·String(char[] value)// 返回String类型,包含字符数组中的参数序列;

②用到的方法

(1)indexOf(int ch,fromIndex);indexOf(String str, int fromIndex)
返回类型:int
说明:从指定的索引处开始,返回指定子字符串第一次出现的字符串中的索引;
注意:形参int ch表示要查找字符对应的ASCII码值,例如要查找空格第一次常出现的位置:int index = str.indexOf(32);fromIndex为可选参数,指查找的开始下标;
(2)substring​(int beginIndex, int endIndex)
返回类型:String;
说明:两个下标之间截取的字符串;
注意:返回的字符串包含beginIndex对应的字符,不包含endIndex,我因为这个找了挺久bug,这种左闭右开的逻辑有丝熟悉的味道;
(3)getChars​(int srcBegin, int srcEnd, char[] dst, int dstBegin)
这个本来是用不到的,但是作为初学,为及时了解到substring方法,在这个任务中,我用了这个方法作为替代,用起来比较麻烦;
返回类型:void
说明:将一段字符序列存储到字符类型的数组中

(2) StringBuilder类

① 用到的构造方法

StringBuilder()//构造一个字符串构建器,其中不包含任何字符,初始容量为16个字符。
StringBuilder(String str)//构造一个初始化为指定字符串内容的字符串构建器。

② 用到的方法

(1)append(String str);
这个任务里我是用的是直接加字符串,但是推荐使用append
返回类型:StringBuilder;
说明:将字符串str拼接到目标对象的字符串中
(2)reverse()
返回类型:StringBuilder
说明:使此字符串序列翻转

4.代码如下

import java.util.Scanner;public class StringTaskOne {// 任务1:个单词字母顺序反转public static void main(String[] args) {// 创建界面和数据处理对象UserInput user = new UserInput();ValueDeal deal = new ValueDeal();// 欢迎界面user.welcome();// 用户输入String value = user.inputValue();// 获取空格数量int count = deal.spaceCount(value);// 存储拆分后的单词String[] valueSplit = deal.splitStr(count,value);// 获取处理后的反转语句String valueReverse = deal.reverseValue(valueSplit);// 输出反转后的语句user.outValue(valueReverse);// 结束程序user.end();}}// 界面类,为了方便观看,而且代码量较少,这里不再建class文件
class UserInput{// 属性,用户输入private Scanner input = new Scanner(System.in);// 构造方法一:无参构造法UserInput(){};// 方法一:欢迎界面public void welcome(){System.out.println("=====程序已启动,感谢您的使用=====");}// 方法一:返回用户输入值public String inputValue(){// 提示用户输入System.out.println("请输入要反转的语句");// 返回用户输入语句return input.nextLine();}// 方法二:显示处理后的语句public void outValue(String str){// 输出接收到的字符串System.out.println("反转后的语句为:"+str);}// 方法三:结束提示public void end(){System.out.println("本次服务到此结束-_-");}
}// 数据处理类
class ValueDeal{// 属性//构造方法一:空构造方法ValueDeal(){};// 方法一:获取输入的语句空格数量public int spaceCount(String str){// 存储已找到空格数量int number = 0;// 通过indexOf查找空格,为了防止首字符和尾字符是空格,从1小标开找,最大下标减一结束for(int i = 1;i < str.length()-1;i++){// 空格的ASCII码为32i =str.indexOf(32,i);if(i == -1){// 等于-1,说明已经不存在空格,返回即可return number;}else{// 找到后空格数量记加一number++;}}// 下面语句不需要,但是不加语法通不过return number;}// 方法二,根据空格数量,将字符串拆分成单词public String[] splitStr(int count,String string){// 存储上一空格下标位置,第一个空格(假设)相当于在第一个元素之前int a1 = -1;// 存储拆分出的字符char[] ch;// 存储拆分后的语句,count个空格将语句分为空格+1份String[] str = new String[count+1];for(int i = 1;i<string.length()-1;i++){// 定义字符长度i = string.indexOf(32,i);// 如果i为-1,跳出if(i == -1){break;}ch = new char[i - a1 - 1];// 赋值string.getChars(a1+1,i,ch,0);//存储至数组str[str.length-count-1] = new String(ch);// 空格数减一count--;a1 = i;}// 将尾部字符串存入ch = new char[string.length()-1 - a1];string.getChars(a1+1,string.length(),ch,0);str[str.length-1] = new String(ch);// 返回处理后的数组return str;}// 方法三:将处理后的数组转换为反转语句public String reverseValue(String[] str){// 存储字符串的变量String string = ""+new StringBuilder(str[0]).reverse();// 通过遍历将语句拼接for(int i = 1;i < str.length;i++){string = string + " "+new StringBuilder(str[i]).reverse();}return string;}}

5.运行效果如下:

初次写博客,请多多指教

编写一个方法,将一段文本中的各个单词的字母顺序翻转题相关推荐

  1. 将文本中的各个单词的字母顺序翻转(Java)

    题目大意 编写一个方法,将一段文本中的各个单词的字母顺序翻转, 例如:"I like writing code best",将变成"I ekil gnitirw edoc ...

  2. 使用java,计算一段文本中出现英语单词次数最多的单词

    package cn.rrl.interview;import java.util.ArrayList; import java.util.Collections; import java.util. ...

  3. 编写一个脚本,统计log文件中首个单词出现的次数

    在[金阳光测试]Android自动化第一季第一讲--预备知识中有这样一个面试题 题目如下: 编写一个脚本,统计log文件中首个单词出现的次数,如: error:xxx waring:xxx error ...

  4. 编写一个方法,数出从0到n中数字2出现了几次?

    2019独角兽企业重金招聘Python工程师标准>>> 编写一个方法,数出从0到n中数字2出现了几次? 例如:如果n为20,那么0,1,2,3,4,5,6,7,8,9,10,11,1 ...

  5. Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点

    *8.31(几何:交点)编写一个方法,返回两条直线的交点.四个点存放在4*2的二维数组points中.编写一个程序,提示用户输入4个点,并显示交点 题目 题目描述 破题 代码 本题运行实例 题目 题目 ...

  6. Java黑皮书课后题第8章:*8.2(求矩阵对角线元素的和)使用下面的方法头编写一个方法,求n*n的double类型矩阵中主对角线上所有数字的和。编写一个程序,读取一个4*4的矩阵,显示主对角线和

    *8.2(求矩阵对角线元素的和)使用下面的方法头编写一个方法,求n*n的double类型矩阵中主对角线上所有数字的和.编写一个程序,读取一个4*4的矩阵,显示主对角线和 题目 题目描述与运行示例 破题 ...

  7. Java黑皮书课后题第8章:*8.1(求矩阵中各列数字的和)使用下面的方法头编写一个方法,求矩阵中特定列的所有元素的和。编写一个测试程序,读取3*4矩阵,显示每列元素的和

    *8.1(求矩阵中各列数字的和)使用下面的方法头编写一个方法,求矩阵中特定列的所有元素的和.编写一个测试程序,读取3*4矩阵,显示每列元素的和 题目 题目描述与运行示例 破题 代码 题目 题目描述与运 ...

  8. Java黑皮书课后题第7章:**7.34(对字符串中的字符排序)使用以下方法头编写一个方法,返回一个排序好的字符串。编写一个测试程序,提示用户输入一个字符串,显示排序好的字符串

    **7.34(对字符串中的字符排序)使用以下方法头编写一个方法,返回一个排序好的字符串.编写一个测试程序,提示用户输入一个字符串,显示排序好的字符串 题目 题目描述 破题 代码 运行实例 题目 题目描 ...

  9. Java黑皮书课后题第7章:*7.13(随机数选择器)编写一个方法,返回1到54之间的随机数,但不能是传递到实参中的数。指定如下方法头

    7.13(随机数选择器)编写一个方法,返回1到54之间的随机数,但不能是传递到实参中的数.指定如下方法头 题目 题目描述 可变长参数列表 破题 代码 运行实例 题目 题目描述 7.13(随机数选择器) ...

最新文章

  1. C++知识点47——类继承中的类型转换与访问权限控制(下)
  2. 数据采集提升性能篇-使用Mybatis的批量操作api导入数据
  3. ScrollView嵌套ListView后,进入页面不从顶部开始显示的问题解决
  4. 大数据发行版本+组件中的竞品/等同地位关系(持续更新中)
  5. python认识if语句_python初认识、基础数据类型以及 if 流程控制
  6. 【计算机网络复习】1.2.1 分层结构、协议、接口、服务
  7. 研究员轻松劫持2.8万台打印机
  8. JavaScript的类型转换
  9. DVWA系列之20 反射型XSS分析
  10. kindle书籍的后缀名_将azw3“转换”成mobi?——关于Kindle格式电子书的名称与后缀及其他的讨论...
  11. 一步步用python制作游戏外挂【转】
  12. 手机vnc连接云服务器,云服务器管理终端(VNC连接)说明
  13. Python count() 方法
  14. 年终盘点跨平台技术(Hybrid、RN、Weex、Flutter)-全栈系列
  15. Unity 动态改变Text字体颜色
  16. 服务器主板显示ff,主板诊断卡跑FF的原因及检查思路
  17. 人工智能对话系统在VUI和GUI结合下对于控件调用的调研报告
  18. wxwork和wx.qy判断企业微信小程序编译运行环境
  19. java快捷键,补全
  20. 自定义WhatsUp监控

热门文章

  1. MCU芯片设计和软件开发
  2. ps2015安装guideguide参考线辅助工具
  3. 查看手机应用最大运行内存
  4. 易车与汽车之家俩大巨头对决
  5. Python 用一个脚本来控制另一个脚本的运行、关闭
  6. [已授权] 互联网定位技术小谈
  7. 精挑细选的良心APP,每款都非常惊艳
  8. 毕业两年,工作三年Java程序员的一点点体会与建议
  9. unity3D数据的本地存储(xml的方式)
  10. SQLyog:Error Code : 1583 Incorrect parameters in the call to native function ‘concat‘