比较容易想到的办法:截取字符串就行,遇到非字母就直接阻断,开始下一次单词的截取。最后只需要逆序打印即可。

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) { 
            String str = in.nextLine();
            String s = "";
            List<String> list = new ArrayList<>();
            for(int i=0;i<str.length();++i){
                if(str.charAt(i)>='a'&&str.charAt(i)<='z'||str.charAt(i)>='A'&&str.charAt(i)<='Z'){
                    s+=str.charAt(i);
                }
                else {
                    list.add(s);
                    s = "";
                }
            }
            if(!s.equals(""))list.add(s);
            for(int i=list.size()-1;i>=0;--i){
                System.out.print(list.get(i)+" ");
            }
        }
    }
}