编写Java函数,将单词翻转顺序输出
题目描述
设计一个函数reverseWords(String sentence),实现将句子中的单词顺序翻转输出。
例如,输入:“Hello World”,输出:“World Hello”。
函数要求
1. 函数输入参数为String类型,表示要翻转的句子;
2. 函数返回值类型为String类型,表示翻转后的句子;
3. 如果参数为空,函数返回null;
4. 翻转后的单词不需要做其他的处理,只需将单词顺序翻转输出即可;
5. 单词内部的字母顺序保持不变;
6. 句子内的单词只包含字母和数字,不包含符号。
函数设计
1. 判断函数输入参数是否为空,如果为空则返回null;
2. 将句子以空格为分隔符拆分成单词数组;
3. 创建一个空的StringBuilder对象,从数组尾部开始遍历单词数组,每次将单词追加到StringBuilder对象中,单词之间用空格分隔;
4. 将StringBuilder对象转换成String类型并返回。
Java 代码实现
public class ReverseWords {
public static String reverseWords(String sentence) {
if (sentence == null || sentence.equals("")) {
return null;
}
String[] words = sentence.split(" ");
StringBuilder sb = new StringBuilder();
for (int i = words.length - 1; i >= 0; i--) {
sb.append(words[i] + " ");
}
return sb.toString().trim();
}
}
使用Junit测试
import org.junit.Assert;
import org.junit.Test;
public class ReverseWordsTest {
@Test
public void testReverseWords() {
String test1 = "Hello World";
String expect1 = "World Hello";
String result1 = ReverseWords.reverseWords(test1);
Assert.assertEquals(expect1, result1);
String test2 = " ";
String expect2 = null;
String result2 = ReverseWords.reverseWords(test2);
Assert.assertEquals(expect2, result2);
String test3 = "abc 123";
String expect3 = "123 abc";
String result3 = ReverseWords.reverseWords(test3);
Assert.assertEquals(expect3, result3);
}
}
