Trocar os nomes

Queria trocar os nomes da String para ficar Albert Einstein, já encontrei soluções para este problema de outra forma,mas não consigo perceber porque assim não escreve nada.

public class MyClass {
public static void main(String args[]) {

    String s = "Einstein Albert";
    System.out.println(nameShuffle(s));
    }
    
    public static String nameShuffle(String s) {
        String[] names = s.split(" ");
	    StringBuilder sb = new StringBuilder();
				
	    for(int i = names.length; i < 0 ; i--){
	        sb.append(names[i]);
		}
			
		return sb.toString();
    }
}
    String s = "Einstein Albert";

    String resultado = "";

    resultado += s.substring(s.indexOf(' ') +1, s.length());

    resultado += " ";

    resultado += s.substring(0, s.indexOf(' '));
    
    System.out.println(resultado);
1 curtida

Seu laço de repetição está com a condição incorreta, pois o contador “i” inicia com o valor 2, que é o tamanho do array, e como 2 é maior que zero ele não chega a fazer nenhuma iteração!

Exemplo:

public class Example {

    public static void main(String ... args) {
        String s = "Einstein Albert";
        System.out.println(nameShuffle(s));
    }

    public static String nameShuffle(String s) {
        String[] names = s.split(" ");
        StringBuilder sb = new StringBuilder();

        for(int i = names.length - 1; i >= 0 ; i--){
            sb.append(names[i]).append(" ");
        }

        return sb.toString();
    }

}
1 curtida

obrigado!!