题目:
编写一个Java程序,将下面的一段文本中的各个单词的字母顺序翻转,
“To be or not to be",变成"oT eb ro ton ot eb."
延伸思考:
1、句中、句尾有可能出现标点符号,若直接按空格分割,则会翻转到对应单词前面;
2、标点符号不止一种;
代码:
package turnsort;
public class Teather2 {
//编写函数,句子反转 (注意此函数有参数)
public static void reverseWord(String str){
String ss[]=str.split(" ");//split分割
// for(String s: ss){//调用interator,遍历器的做法进行for循环
// System.out.println(s);
// }
StringBuffer sb1 = new StringBuffer();//注意stringbuffer类型的函数操作可以永久改变原有字符串,不用再次赋值
for(int i=0;i<ss.length;i++){//带有索引值的for循环的做法
StringBuffer sTemp = new StringBuffer(ss[i]);//给每一个单词初始化
//单词翻转(需讨论词尾是否有标点)
if(sTemp.charAt(sTemp.length()-1)==','||sTemp.charAt(sTemp.length()-1)=='.'||sTemp.charAt(sTemp.length()-1)=='?'||sTemp.charAt(sTemp.length()-1)=='!'){//charat找到索引值并且返回
//删掉单词后有的标点符号,注意删之前要先把那个标点保存了,翻转后再加上
char cTemp = sTemp.charAt(sTemp.length()-1);//保存标点
sTemp.deleteCharAt(sTemp.length()-1);//删掉标点
sTemp.reverse();//单词翻转
sTemp.append(cTemp);//加上标点
sb1.append(sTemp);
if(i != ss.length-1){
sb1.append(" ");
}
}
else{
sTemp.reverse();//单词反转
sb1.append(sTemp);
if(i != ss.length-1){
sb1.append(" ");
}
}
}
System.out.println(sb1.toString());
}//注意:1、句尾是别的符号;2、句尾没有标点符号;3、句中有标点符号
public static void main(String[] args){
System.out.println("reverseWord");
reverseWord("To be, or not to be.");//可查看反转结果
}
}
运行结果:
reverseWord
oT eb, ro ton ot eb.