Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fiz a classe Empregado:
package exercicio_07;
public class Empregado {
String nome, sobrenome, cargo;
double salario;
public Empregado(String nome, String sobrenome, String cargo, double salario){
setNome(nome);
setSobrenome(sobrenome);
setCargo(cargo);
setSalario(salario);
}
public void setNome(String nome){
this.nome = nome;
}
public String getNome(){
return nome;
}
public void setSobrenome(String sobrenome){
this.sobrenome = sobrenome;
}
public String getSobrenome(){
return sobrenome;
}
public void setCargo(String cargo){
this.cargo = cargo;
}
public String getCargo(){
return cargo;
}
public void setSalario(double salario){
this.salario = salario;
}
public double getSalario(){
return salario;
}
}
e EmpregadoTeste:
package exercicio_07;
import java.util.Scanner;
public class EmpregadoTeste {
static Scanner in;
public static void main(String args[]){
in = new Scanner(System.in);
int qtd;
System.out.println("Informe a quantidade de empregados que deseja cadastrar");
qtd= in.nextInt();
for(int i = 1; i <= qtd; i++){
Empregado empregado = cadastraEmpregado();
if(i == qtd)
exibeEmpregado(empregado);
}
}
public static Empregado cadastraEmpregado(){
in.nextLine();
System.out.println("Informe o nome do empregado");
String nome = in.nextLine();
System.out.println("Informe o sobrenome do empregado");
String sobrenome = in.nextLine();
System.out.println("Informe o cargo do empregado");
String cargo = in.nextLine();
System.out.println("Informe o salario mensal do empregado");
double salario = in.nextDouble();
Empregado e = new Empregado(nome,sobrenome,cargo,salario);
return e;
}
public static void exibeEmpregado(Empregado e){
System.out.printf("Nome: %s\nSobrenome: %s\nCargo: %s\nSalário: %lf",e.nome,e.sobrenome,e.cargo,e.salario);
}
}
Quando vou executar, da erro na hora de imprimir os dados dos empregados:
Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'l'
at java.util.Formatter$FormatSpecifier.conversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.<init>(Unknown Source)
at java.util.Formatter.parse(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.io.PrintStream.format(Unknown Source)
at java.io.PrintStream.printf(Unknown Source)
at exercicio_07.EmpregadoTeste.exibeEmpregado(EmpregadoTeste.java:43)
at exercicio_07.EmpregadoTeste.main(EmpregadoTeste.java:18)
Você está criando uma variável dentro de um loop, ela será "visível" somente ali.
// esse loop cria um novo empregado
for(int i = 1; i <= qtd; i++){
Empregado empregado = cadastraEmpregado(); // variável empregado é visível para esse loop
}
for(int i = 1; i < qtd; i++){
exibeEmpregado(empregado); // esse loop não enxerga a variável empregado.
}
Você pode arrumar assim:
Empregado empregado = null; // fora dos loops
for(int i = 1; i <= qtd; i++)
empregado = cadastraEmpregado(); // enxerga empregado
for(int i = 1; i < qtd; i++)
exibeEmpregado(empregado); // enxerga empregado
Mas creio que o output não será o esperado. Você vai ler 'n' empregados, mas só será exibido o último. Isso acontece porque você está usando a mesma variável para criar um novo empregado. Se quiser exibir todos os empregados você irá precisar criar um vetor.
obs: Ainda na linha 19, o nome do seu método é "exibeEmpregado" e não "exibeEmpregados".
aaah muito obrigada! tive q mudar mt coisa mas consegui shashauhs
public class EmpregadoTeste {
static Scanner in;
public static void main(String args[]){
in = new Scanner(System.in);
int qtd;
Empregado empregado[];
System.out.println("Informe a quantidade de empregados que deseja cadastrar");
qtd= in.nextInt();
empregado = new Empregado[qtd];
for(int i = 0; i < qtd; i++){
empregado[i] = new Empregado();
in.nextLine();
System.out.println("Informe o nome do empregado");
empregado[i].setNome(in.nextLine());
System.out.println("Informe o sobrenome do empregado");
empregado[i].setSobrenome(in.nextLine());
System.out.println("Informe o cargo do empregado");
empregado[i].setCargo(in.nextLine());
System.out.println("Informe o salario mensal do empregado");
empregado[i].setSalario(in.nextDouble());
}
for(int i = 0; i < qtd; i++){
System.out.println("Nome: "+empregado[i].getNome()+"\nSobrenome: "+empregado[i].getSobrenome()+
"\nCargo: "+empregado[i].getCargo()+"\nSalário:"+empregado[i].getSalario()+"\n"); }
}
}
aah consertei mas agr ta com um erro diferente, dei uma estudada e mudei o EmpregadoTeste:
public class EmpregadoTeste {
Erro na linha 19. Pq da esse erro??