import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNextLine()) { String inputstr = in.nextLine(); String[] splitstr = inputstr.split("\\s+"); StringBuffer reversestr = new StringBuffer(); for(int i=splitstr.length-1;i>=0;i--){ reversestr.append(splitstr[i]).append(" "); } System.out.println(reversestr); } } }
先上代码.由于需要保障单词的完整性,不能像之前操作字符串那样直接reverse.笔者使用正则表达式\s+和split方法拆分字符串的单词,获得包含所有内容的字符串数组.由于还需要重新添加空格,故使用StringBuffer追加内容的方式.倒序追加,需要注意for循环的边界条件也要反着写.最终多了1个空格,貌似对输出结果没影响,能通过.使用toString方法强转为字符串后使用trim()方法其实更妥当.