高分悬赏提问:颠倒单词程序,用Java语言编写:

输入
jack is a good boy
输出
boy good a is jack

StringBuffer 类有一个 reverse 可以直接完成反转。


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = new String(sc.nextLine());
        System.out.println(reverseStr(str));
    }

    public static String reverseStr(String str) {
        char[] ch = str.toCharArray();
        swap(ch, 0, ch.length - 1);
        int blank = -1;
        for (int i = 0; i < ch.length; i++) {
            if (ch[i] == ' ') {
                int nextBlank = i;
                swap(ch, blank + 1, nextBlank - 1);
                blank = nextBlank;
            }
        }
        return (new String(ch));

    }

    public static void swap(char[] c, int start, int end) {
        while (start < end) {
            char temp = c[start];
            c[start] = c[end];
            c[end] = temp;
            start++;
            end--;
        }
    }

    public static void main(String[] args) {
        String str = "this is a test text.";
        Stack<String> stack = new Stack<>();
        for (String tmp: str.trim().split(" ")){
            stack.push(tmp);
        }
        while (!stack.empty()){
            System.out.print(stack.pop() + " ");
        }
    }

后进先出问题 一律采用栈

public static void main(String[] args) {
String data = "this is a test";

    data = data.replaceAll(" +"," ").replace("[,|.]"," ");
    String[] arr = data.split(" ");
    for(int i = arr.length - 1;i >= 0;i--){
        if(arr[i].equals(" "))continue;
        System.out.print(arr[i] + " ");
    }
    System.out.println();

}

循环倒序遍历即可

    for(int i = arr.length - 1;i >= 0;i--){
        System.out.print(arr[i] + " ");
    }

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

public class WordReverse {
public static void main(String[] arg){
String inStr = "jack is a good boy";
System.out.println(reverseWords(inStr));
}
public static String reverseWords(String str){
String[] as = str.split(" ");
List list = Arrays.stream(as).collect(Collectors.toList());
Collections.reverse(list);
return String.join(" ",list);
}
}