Erro leitura

Eu escrevi o código abaixo para fazer umexercíco tirado do livro Java como programar onde ele lê o nome, o sobrenome e o salário de dois usuários e depois exibe o salário anual e depois acrescenta 10% ao salário e reexibe o salário anual.
O prblem é que qundo eu ela vai ler o nome do segundo usuário ele pede para digitar o nome e logo em seguida já pede o sobrenome sem permitir que o usuário digite o primeiro nome.

[color=green]// Exerc. 3.14 pag. 85: EmployeeTest.java

import java.util.Scanner;

// classe principal do aplicativo
public class EmployeeTest
{
// método principal que inicia a execução do aplicativo
public static void main( String args[] )
{
Employee employee1 = new Employee( "", "", 0.0 );
Employee employee2 = new Employee( "", "", 0.0 );

	Scanner input = new Scanner( System.in );

	String nomeEmployee;	 	// primeiro nome
	String sobrenomeEmployee;	// sobrenome 
	double salarioEmployee;		// salário 

	// Pede os dados do primeiro usuário---------------------------------------------------------------------------------------
	System.out.print( "Informe o nome do primeiro usuário: " );
	nomeEmployee = input.nextLine();
	employee1.setPrimeiroNome( nomeEmployee );

	System.out.print( "Informe o sobrenome do primeiro usuário: " );
	sobrenomeEmployee = input.nextLine();
	employee1.setSegundoNome( sobrenomeEmployee );

	System.out.print( "Informe o salário do primeiro usuário: " );
	salarioEmployee = input.nextDouble();
	employee1.setSalarioMensal( salarioEmployee );
	employee1.calculaSalarioAnual( salarioEmployee );

	// exibe o nome, sobrenome, salário mensal e anual do usuário
	System.out.printf( "Usuário: %s %s\nSalário mensal:%.2f\nSalário anual: %.2f\n", 
		employee1.getPrimeiroNome(), employee1.getSegundoNome(), employee1.getSalarioMensal(), employee1.getSalarioAnual() );
	
	// faz um acréscime de 10% no salário anual
	System.out.print( "Acréscimo de 10% no salário do primeiro usuário\n" );
	employee1.acrescimoSalario( salarioEmployee );
	System.out.printf( "Novo valor do salário anual do primeiro usuário: %.2f\n", employee1.getAcrescimoSalario() );
	//--------------------------------------------------------------------------------------------------------------------------
	
	// Pede os dados do segundo usuário---------------------------------------------------------------------------------------
	System.out.print( "\n\nInforme o nome do segundo usuário: " );
	nomeEmployee = input.nextLine();
	employee2.setPrimeiroNome( nomeEmployee );

	System.out.print( "Informe o sobrenome do segundo usuário: " );
	sobrenomeEmployee = input.nextLine();
	employee2.setSegundoNome( sobrenomeEmployee );

	System.out.print( "Informe o salário do segundo usuário: " );
	salarioEmployee = input.nextDouble();
	employee2.setSalarioMensal( salarioEmployee );
	employee2.calculaSalarioAnual( salarioEmployee );

	// exibe o nome, sobrenome, salário mensal e anual do usuário
	System.out.printf( "Usuário: %s %s\nSalário mensal:%.2f\nSalário anual: %.2f\n", 
		employee2.getPrimeiroNome(), employee2.getSegundoNome(), employee2.getSalarioMensal(), employee2.getSalarioAnual() );
	
	// faz um acréscime de 10% no salário anual
	System.out.print( "Acréscimo de 10% no salário do segundo usuário\n" );
	employee2.acrescimoSalario( salarioEmployee );
	System.out.printf( "Novo valor do salário anual do segundo usuário: %.2f\n", employee2.getAcrescimoSalario() );
	//--------------------------------------------------------------------------------------------------------------------------
	
}	// fim do método principal

} // fim da classe principal

public class Employee
{
private String primeiroNome;
private String segundoNome;
private double salarioMensal;
private double salarioAnual;
private double acrescimoSalario;

// construtor da classe Employee
public Employee( String nome, String sobrenome, double salario )
{
	primeiroNome = nome;
	segundoNome = sobrenome;
	salarioMensal = salario;
}	// termina o construtor


// método para configurar o primeiro nome
public void setPrimeiroNome( String pNome )
{
	primeiroNome = pNome;
}

// método para recuperar o primeiro nome
public String getPrimeiroNome()
{
	return primeiroNome;
}

// método para configurar o segundo nome
public void setSegundoNome( String sNome )
{
	segundoNome = sNome;
}

// método para recuperar o segundo nome
public String getSegundoNome( )
{	
	return segundoNome;
}

// método para configurar o salário mensal
public void setSalarioMensal( double salario )
{
	salarioMensal = salario;
	
	if ( salarioMensal < 0 )
		salarioMensal = 0.0;
}

// método para recuperar o salario
public double getSalarioMensal()
{
	return salarioMensal;
}

// método para calcular o salário anual
public void calculaSalarioAnual( double valorSalario )
{
	salarioAnual = valorSalario * 12;
}

// método para recuperar o valor do salário anual
public double getSalarioAnual()
{
	return salarioAnual;
}


// método para calcular um acréscimo de 10% no salário anual
public void acrescimoSalario( double salarioEmployee )
{
	acrescimoSalario = ( salarioEmployee + 0.10 ) * 12;
}

// método para recuperar o novo valor do salário
public double getAcrescimoSalario()
{
	return acrescimoSalario;
}

} // fim da classe Employee[/color]

[color=darkblue]
abaixo té a saída do programa no console:

Informe o nome do primeiro usuario: Tiago
Informe o sobrenome do primeiro usuario: Lopes
Informe o salario do primeiro usuario: 12,32
Usuario: Tiago Lopes
Salario mensal:12,32
Salario anual: 147,84
Acrascimo de 10% no salario do primeiro usuario
Novo valor do salario anual do primeiro usuario: 149,04

// aqui é que ta dando erro
Informe o nome do segundo usuario: Informe o sobrenome do segundo usuario: Paulo
Informe o salario do segundo usuario: 12,65
Usuario: Paulo
Salario mensal:12,65
Salario anual: 151,80
Acrascimo de 10% no salario do segundo usuario
Novo valor do salario anual do segundo usuario: 153,00[/color]

Se alguém puder me ajudar eu fico muito agradecido!

Em primeiro lugar

// Exerc. 3.14 pag. 85: EmployeeTest.java

import java.util.Scanner;

// classe principal do aplicativo
public class EmployeeTest {
	// método principal que inicia a execução do aplicativo
	public static void main(String args[]) {
		Employee employee1 = new Employee("", "", 0.0);
		Employee employee2 = new Employee("", "", 0.0);

		Scanner input = new Scanner(System.in);

		String nomeEmployee; // primeiro nome
		String sobrenomeEmployee; // sobrenome
		double salarioEmployee; // salário

		// Pede os dados do primeiro
		// usuário---------------------------------------------------------------------------------------
		System.out.print("Informe o nome do primeiro usuário: ");
		nomeEmployee = input.nextLine();
		employee1.setPrimeiroNome(nomeEmployee);

		System.out.print("Informe o sobrenome do primeiro usuário: ");
		sobrenomeEmployee = input.nextLine();
		employee1.setSegundoNome(sobrenomeEmployee);

		System.out.print("Informe o salário do primeiro usuário: ");
		salarioEmployee = input.nextDouble();
		employee1.setSalarioMensal(salarioEmployee);
		employee1.calculaSalarioAnual(salarioEmployee);

		// exibe o nome, sobrenome, salário mensal e anual do usuário
		System.out.printf("Usuário: %s %s\nSalário mensal:%.2f\nSalário anual: %.2f\n", employee1.getPrimeiroNome(),
				employee1.getSegundoNome(), employee1.getSalarioMensal(), employee1.getSalarioAnual());

		// faz um acréscime de 10% no salário anual
		System.out.print("Acréscimo de 10% no salário do primeiro usuário\n");
		employee1.acrescimoSalario(salarioEmployee);
		System.out.printf("Novo valor do salário anual do primeiro usuário: %.2f\n", employee1.getAcrescimoSalario());
		// --------------------------------------------------------------------------------------------------------------------------

		// Pede os dados do segundo
		// usuário---------------------------------------------------------------------------------------
		System.out.print("\n\nInforme o nome do segundo usuário: ");
		nomeEmployee = input.nextLine();
		employee2.setPrimeiroNome(nomeEmployee);

		System.out.print("Informe o sobrenome do segundo usuário: ");
		sobrenomeEmployee = input.nextLine();
		employee2.setSegundoNome(sobrenomeEmployee);

		System.out.print("Informe o salário do segundo usuário: ");
		salarioEmployee = input.nextDouble();
		employee2.setSalarioMensal(salarioEmployee);
		employee2.calculaSalarioAnual(salarioEmployee);

		// exibe o nome, sobrenome, salário mensal e anual do usuário
		System.out.printf("Usuário: %s %s\nSalário mensal:%.2f\nSalário anual: %.2f\n", employee2.getPrimeiroNome(),
				employee2.getSegundoNome(), employee2.getSalarioMensal(), employee2.getSalarioAnual());

		// faz um acréscime de 10% no salário anual
		System.out.print("Acréscimo de 10% no salário do segundo usuário\n");
		employee2.acrescimoSalario(salarioEmployee);
		System.out.printf("Novo valor do salário anual do segundo usuário: %.2f\n", employee2.getAcrescimoSalario());
		// --------------------------------------------------------------------------------------------------------------------------

	} // fim do método principal
} // fim da classe principal

public class Employee {
	private String primeiroNome;

	private String segundoNome;

	private double salarioMensal;

	private double salarioAnual;

	private double acrescimoSalario;

	// construtor da classe Employee
	public Employee(String nome, String sobrenome, double salario) {
		primeiroNome = nome;
		segundoNome = sobrenome;
		salarioMensal = salario;
	} // termina o construtor

	// método para configurar o primeiro nome
	public void setPrimeiroNome(String pNome) {
		primeiroNome = pNome;
	}

	// método para recuperar o primeiro nome
	public String getPrimeiroNome() {
		return primeiroNome;
	}

	// método para configurar o segundo nome
	public void setSegundoNome(String sNome) {
		segundoNome = sNome;
	}

	// método para recuperar o segundo nome
	public String getSegundoNome() {
		return segundoNome;
	}

	// método para configurar o salário mensal
	public void setSalarioMensal(double salario) {
		salarioMensal = salario;

		if (salarioMensal < 0)
			salarioMensal = 0.0;
	}

	// método para recuperar o salario
	public double getSalarioMensal() {
		return salarioMensal;
	}

	// método para calcular o salário anual
	public void calculaSalarioAnual(double valorSalario) {
		salarioAnual = valorSalario * 12;
	}

	// método para recuperar o valor do salário anual
	public double getSalarioAnual() {
		return salarioAnual;
	}

	// método para calcular um acréscimo de 10% no salário anual
	public void acrescimoSalario(double salarioEmployee) {
		acrescimoSalario = (salarioEmployee + 0.10) * 12;
	}

	// método para recuperar o novo valor do salário
	public double getAcrescimoSalario() {
		return acrescimoSalario;
	}
} // fim da classe Employee

Cara…
seguinte, nessa parte do código:

 		// Pede os dados do segundo
 		// usuário---------------------------------------------------------------------------------------
 		System.out.print("\n\nInforme o nome do segundo usuário: ");
 		nomeEmployee = input.nextLine();
 		employee2.setPrimeiroNome(nomeEmployee);

ele ta pegando algum lixo (espaço no caso) pro nome do segundo usuario.

experimenta colocar um nextLine antes dessa parte, tipo:

 		// Pede os dados do segundo
 		// usuário---------------------------------------------------------------------------------------
                input.nextLine();
 		System.out.print("\n\nInforme o nome do segundo usuário: ");
 		nomeEmployee = input.nextLine();
 		employee2.setPrimeiroNome(nomeEmployee);

É uma solução feia, mas deve resolver…

Realmente resolveu! Obrigado pela ajuda! Mas mesmo assim não tirou a minha dúvida do porque está acontecendo isso.