Busco ajuda para solucionar um problema relacionado a um array que faz referencia a um objeto “Funcionario”. Cada uma das classes abaixo funciona sozinha sem nenhuma mensagem de erro.
Porém, eu gostaria de adicionar um objeto “Funcionario” a um objeto “Empresa” que possui um array de referencias a objetos “Funcionario”
Aparentemente, não está funcionando
Ok, vamos por partes:
01) Depois de criar uma referencia a um objeto “Funcionario” na linha 7, eu uso o método “registerFuncionario” na linha 13 para preencher todos os atributos da classe.
02) Então eu crio uma referencia a um objeto “Empresa” na linha 8, e passo a referencia do objeto “Funcionario” para a referencia do objeto “Empresa” na linha 14.
03) Então, logo depois de passar o “Funcionario” como argumento para o método adicionarFuncionarios" eu tento imprimir todos os salarios dos funcionarios, passados anteriormente, e então o erro acontece:
Salario 1: Exception in thread “main” java.util.IllegalFormatConversionException: d != java.lang.Double
at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4302)
at java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2793)
at java.util.Formatter$FormatSpecifier.print(Formatter.java:2747)
at java.util.Formatter.format(Formatter.java:2520)
at java.io.PrintStream.format(PrintStream.java:970)
at java.io.PrintStream.printf(PrintStream.java:871)
at banco.Empresa.printAllSalario(Empresa.java:49)
at banco.Teste.main(Teste.java:17)
Onde está o erro? Por favor, ajuda!
Código:
Classe funcionario:
import java.util.Scanner;
public class Funcionario {
Scanner input = new Scanner(System.in);
private double salario;
private String nome;
private String rg;
private String dataAdmissao;
public void setSalario(double salarioF){
this.salario = salarioF;
}
public void setNome(String nomeF){
this.nome = nomeF;
}
public void setRg(String rgF){
this.rg = rgF;
}
public void setDataAdmissao(String dataAdmissaoF){
this.dataAdmissao = dataAdmissaoF;
}
public double getSalario(){
return salario;
}
public String getNome(){
return nome;
}
public String getRg(){
return rg;
}
public String getDataAdmissao(){
return dataAdmissao;
}
public void registerFuncionario(){
System.out.print("Entre com o nome do funcionario: ");
setNome(input.nextLine());
input = new Scanner(System.in);
System.out.print("Entre com o RG do funcionario: ");
setRg(input.nextLine());
input = new Scanner(System.in);
System.out.print("Entre com a data de admissao do funcionario: ");
setDataAdmissao(input.nextLine());
input = new Scanner(System.in);
System.out.print("Entre com o salario do funcionario: ");
setSalario(input.nextDouble());
input = new Scanner(System.in);
}
public void printFuncionarioInfo(){
System.out.println("Nome do funcionario: "+getNome());
System.out.println("RG do funcionario: "+getRg());
System.out.println("Data de admissao do funcionario: "+getDataAdmissao());
System.out.println("Salario do funcionario: "+getSalario());
}
}
Classe Empresa:
import java.util.Scanner;
public class Empresa {
Scanner input = new Scanner(System.in);
private String nomeEmpresa;
private String cnpj;
Funcionario empregados[];
public void setNomeEmrpesa(String nomeEmpresa){
this.nomeEmpresa = nomeEmpresa;
}
public void setCnpj(String cnpj){
this.cnpj = cnpj;
}
public String getNomeEmpresa(){
return nomeEmpresa;
}
public String getCnpj(){
return cnpj;
}
public void registerEmpresa(){
System.out.print("Nome da Empresa: ");
setNomeEmrpesa(input.nextLine());
System.out.print("CNPJ: ");
setCnpj(input.nextLine());
}
public void printEmpresaInfo(){
System.out.println("Nome da empresa: "+nomeEmpresa);
System.out.println("CNPJ: "+cnpj);
}
public void adicionarFuncionario(Funcionario k){
int i=0;
while(empregados[i] != null)
i++;
empregados[i] = new Funcionario();
empregados[i] = k;
}
public void printAllSalario(){
for(int i=0; empregados[i] != null; i++){
System.out.printf("Salario %d: %d", (i+1), empregados[i].getSalario());
}
}
}
Classe Teste "contendo o método main" :
public class Teste {
public static void main(String[] args){
Funcionario empregado = new Funcionario();
Empresa empresa1 = new Empresa();
empresa1.empregados = new Funcionario[3];
for(int i =0; i<empresa1.empregados.length; i++){
System.out.printf("Cadastrando o funcionario %d\n", (i+1));
empregado.registerFuncionario();
empresa1.adicionarFuncionario(empregado);
}
empresa1.printAllSalario();
}//fim do main
}//fim da classe