java – problema com nextLine() dentro do loop

O usuário deve digitar nome e senha diferentes, enquanto forem iguais vai ficar no loop

...

Scanner teclado = new Scanner(System.in);

String nome, senha;

do{

System.out.println("Digite nome:");
nome = teclado.nextLine();

System.out.println("Digite senha:");
senha = teclado.next();

if(nome.equals(senha)){

System.out.println("Nome deve ser diferente de senha, Digite novamente");
}

} while(nome.equals(senha));

...

Quando nome e senha são iguais ele deveria retornar e pedir para digitar apenas o nome, só então depois pedir a senha, porém ele pede os 2 nome e senha, queria entender pq o nextLine faz isso e como deve fazer para usar ele nesse caso. obs: sei q o next() resolve