大牛们帮小弟我看看这个单词反转的代码有关问题在哪

大牛们帮我看看这个单词反转的代码问题在哪
要求:反转一句话,如:i love    java,反转后变成java      love i,中间的空格不能少,我写的代码:

private static String reverse(String str) {
String[] arr = str.split(" ");

StringBuilder bulder = new StringBuilder();
String tmp = "";
for (int i = 0; i < arr.length; i++) {
tmp=arr[arr.length - i - 1];
bulder.append(tmp);
System.out.println(tmp);
}
System.out.println(bulder.toString());
return bulder.toString();
}

但是这样出来的字符串空格都没有了,但是在函数里System.out.println(tmp);空格又是存在的,这是为啥啊
还有写一段代码测试这个函数功能,这个测试思想是什么?
------解决思路----------------------
把这些单词依次压入栈,然后再弹出来,就OK了。
------解决思路----------------------

     public class TestJava {

 private static String reverse(String str) {
    String[] arr = str.split(" ");  //此处是以空格作为处理字符串的分隔符,所以输出时自然没有了
    StringBuilder bulder = new StringBuilder();
    String tmp = "";
    for (int i = 0; i < arr.length; i++) {
        tmp=arr[arr.length - i - 1];
        bulder.append(tmp);
    }
    System.out.println(bulder.toString());
    return bulder.toString();
}
 
 public static void main(String args[])
 {
 reverse("i love java");  //调用静态函数 reverse() 进行测试
 }
}

------解决思路----------------------
二楼正解,你应该在字符串连接的时候 中间加一个空格 补上去。
for (int i = 0; i < arr.length; i++) {
            tmp=arr[arr.length - i - 1];
            if(i!=arr.length-1){
             bulder.append(tmp+" ");
            }else{
             bulder.append(tmp);
            }
        }

------解决思路----------------------
引用:
二楼正解,你应该在字符串连接的时候 中间加一个空格 补上去。
for (int i = 0; i < arr.length; i++) {
            tmp=arr[arr.length - i - 1];
            if(i!=arr.length-1){
             bulder.append(tmp+" ");
            }else{
             bulder.append(tmp);
            }
        }

+1