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!