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()方法其实更妥当.