Reverse words in Java
The odd behaviour is that the result gets printed twice: once in reverse(), and again in main().  reverse() should be fixed so that it returns the result without printing it.

The output will also include an extra space at the end.  It may be invisible, but I would consider it technically incorrect.

Your code, with those issues fixed, and a few tweaks:

public static String reverse(String input) {
    String delimiter = " ";                        
    String[] splits = input.split(delimiter);
    String reverse = "";                            // Same as new String("")
    for (int i = splits.length - 1; i &gt; 0; i--) {   // Be more generous with spaces
        reverse += splits[i] + delimiter;           // Get rid of .concat()
    }
    if (splits.length &gt; 0) {
        reverse += splits[0];
    }
    return reverse;
}


However, repeated string concatenation is inefficient: every += involves allocating a new buffer and copying everything.  You should really be using a StringBuilder, like this.  (Other suggested solutions in that question are also quite good.  You should study those answers and form your own opinion.)