方式一:不使用正则表达式

import java.util.ArrayList;
import java.util.Scanner;

/**
 * 【单词倒排】  (不使用正则表达式)
 *
 *  描述:
 *  对字符串中的所有单词进行倒排。
 *  1、构成单词的字符只有26个大写或小写英文字母;
 *  2、非构成单词的字符均视为单词间隔符;
 *  3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
 *  4、每个单词最长20个字母;
 *
 *  A-Z的ascii值为 65-90    a-z的ascii值为 97-122
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String nextLine = sc.nextLine();
        StringBuilder sb = new StringBuilder(nextLine);

        char[] chars = nextLine.toCharArray();
        // 存放非法字符的索引位置
        ArrayList<Integer> indexList = new ArrayList<>();
        for (int i = 0; i < chars.length; i++) {
            if ((chars[i] < 65 || chars[i] > 90) && (chars[i] < 97 || chars[i] > 122)) {
                indexList.add(i);
            }
        }
        // 非法字符替换
        for (int i = 0; i < indexList.size(); i++) {
            sb.replace(indexList.get(i), indexList.get(i) + 1, " ");
        }
        // 字符串分割,打印输出
        String[] split = sb.toString().split(" ");
        for (int j = split.length - 1; j >= 0; j--) {
            if (!"".equals(split[j])) {
                System.out.print(split[j] + " ");
            }
        }
    }
}

方式二:使用正则表达式

import java.util.ArrayList;
import java.util.Scanner;

/**
 * 【单词倒排】  (使用正则表达式)
 *
 *  描述:
 *  对字符串中的所有单词进行倒排。
 *  1、构成单词的字符只有26个大写或小写英文字母;
 *  2、非构成单词的字符均视为单词间隔符;
 *  3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;
 *  4、每个单词最长20个字母;
 *
 *  A-Z的ascii值为 65-90    a-z的ascii值为 97-122
 */
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String nextLine = scanner.nextLine();
        //非字母都用作分隔符
        String[] splitStr = nextLine.split("[^a-zA-Z]");
        StringBuilder str = new StringBuilder();
        for (int i = splitStr.length - 1; i >= 0; i--) {
            str.append(splitStr[i]);
            if(i != 0) {
                str.append(" ");
            }
        }
        System.out.println(str);
    }
}