Uma ótima tarde, senhores!
Estou encontrando dificuldades em corrigir o meu código. Desde o inicio tentei fazer um pouco diferente (utilizando o Scanner), mas depois que mudei o modificador de acesso do "Funcionario - public Funcionario[ ] colaboradores; " para "private", não estou conseguindo mais passar e nem imprimir os valores (devo ter deixado escapar algo importante). Ressalto que até o exercício anterior, tudo funcionava.
Se puderem me dar umas dicas de como consertar o(s) erro(s) e confirmar que o código está no caminho certo. Fico muito agradecido!
*Qualquer sugestão ou critica será muito bem recebida!
/*
* Crie os getters e setters da sua classe Empresa e coloque seus atributos como private. Lembre-se de que não necessariamente todos os atributos devem ter getters e * setters.
* Por exemplo, na classe Empresa, seria interessante ter um setter e getter para a sua array de funcionários? Não seria mais interessante ter um método como este?
*/
import java.util.Scanner;
class Empresa{
private String nomeEmpresa;
private String cnpj;
private String endereco;
private String cidade;
private String pais;
private Funcionario[] colaboradores;
private int livre;
public Funcionario getColaboradores(int posicao){
return this.colaboradores[posicao];
}
public void setFuncionario(Funcionario[] colaboradores){
this.colaboradores = colaboradores;
}
public boolean contem(Funcionario f){
for(int i = 1; i < this.livre; i++){ // Era colaboradores.length
if(this.colaboradores[i] != null){
if(this.colaboradores[i] == f){
System.out.println("* O funcionário já consta no banco de dados!");
System.out.println("\n\n##############################################################\n");
return true;
}
}
}
System.out.println("* O funcionário foi cadastrato no banco de dados!");
System.out.println("\n\n##############################################################\n");
return false;
}
/*
boolean contem(String nm){
for(int i = 0; i < this.colaboradores.length; i++){
if(this.colaboradores[i].nome.equals(nm)){
return true;
}
}
return false;
}
*/
public void adicionar(Funcionario f){
for(livre = 0; livre < this.colaboradores.length; livre++) {
if(this.colaboradores[livre] == null) {
this.colaboradores[livre] = f;
System.out.println("\n--------------------------------------------");
System.out.println("| Cadastro de: " +this.colaboradores[livre].getNome()+ " salvo com sucesso |");
System.out.println("--------------------------------------------");
return;
} else
continue;
}
}
public String getNomeEmpresa( ){
return this.nomeEmpresa;
}
public void setNomeEmpresa(String nomeEmpresa){
this.nomeEmpresa = nomeEmpresa;
}
public String getCnpj(){
return this.cnpj;
}
public void setCnpj(String cnpj){
this.cnpj = cnpj;
}
public String getEndereco(){
return this.endereco;
}
public void setEndereco(String endereco){
this.endereco = endereco;
}
public String getCidade(){
return this.cidade;
}
public void setCidade(String cidade){
this.cidade = cidade;
}
public String getPais(){
return this.pais;
}
public void setPais(String pais){
this.pais = pais;
}
public int getLivre(){
return this.livre;
}
public void setLivre(int livre){
this.livre = livre;
}
/*
public void mostraTodasInformacoes(){
for(int i = 0; i < this.livre; i++){
System.out.println(this.colaboradores[i].mostra());
}
}
public void mostraEmpregados(){
for(int i = 0; i < this.livre; i++){
System.out.println(this.colaboradores[i].getNome());
System.out.println("############");
}
}
*/
public void mostra(){
System.out.println("___________DADOS DA EMPRESA:___________");
System.out.println("| Nome da empresa: " +this.getNomeEmpresa());
System.out.println("| Número do CNPJ: " +this.getCnpj());
System.out.println("| Endereço: " +this.getEndereco());
System.out.println("| Cidade: " +this.getCidade());
System.out.println("| Pais: " +this.getPais());
System.out.println("-_-_-_-__-_-_-_-__-_-_-_-__-_-_-_-__-_-_-_-\n\n\n");
for(int i = 0; i <= this.livre; i++){
if(this.colaboradores == null) continue;
System.out.println("___________DADOS DO FUNCIONARIO:___________");
System.out.println("| Funcionario na posição: "+i);
System.out.println("| Nome do funcionário: " +this.colaboradores[i].getNome());
System.out.println("| Departamento: " +this.colaboradores[i].getDepart());
System.out.println("| Data de Entrada: " +this.colaboradores[i].dataEntrada.getDataFormatada());
System.out.println("| Número do RG: " +this.colaboradores[i].getRg());
System.out.println("| Salário atualizado: R$" +this.colaboradores[i].getSalario());
System.out.println("| Ganho anual: R$" +this.colaboradores[i].calculaGanhoAnual());
System.out.println("______________________________________\n");
}
}
}
class Funcionario{
private String nome;
private String depart;
private double salario;
private double salarioAnual;
public Data dataEntrada;
private String rg;
public String getNome(){
return this.nome;
}
public void setNome(String nome){
this.nome = nome;
}
public String getDepart(){
return this.depart;
}
public void setDepart(String depart){
this.depart = depart;
}
public double getSalario(){
return this.salario;
}
public void setSalario(double salario){
this.salario = salario;
}
public double calculaGanhoAnual(){
return this.salario * 12;
}
public void recebeAumento (double salarioAtual){
if(salarioAtual >= 0 && salarioAtual <= 1874){
this.salario = salarioAtual + salarioAtual * 0.1; //arumartttttttttttttttttttttttttttt
}
else if(salarioAtual > 1874 && salarioAtual <= 4685){
this.salario = salarioAtual + salarioAtual * 0.07;
}
else if(salarioAtual > 4685){
this.salario = salarioAtual + salarioAtual * 0.05;
}else{
System.out.println("\n| Opção Inválida!");
}
}
public String getRg(){
return this.rg;
}
public void setRg(String rg){
this.rg = rg;
}
}
class Data{
int dia, mes, ano;
public void setDataFormatada(int dia, int mes, int ano){
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
public String getDataFormatada(){
return this.dia+"/"+this.mes+"/"+this.ano;
}
}
class Principal_Exec_05_04 {
public static void main (String [] args){
Scanner leia1 = new Scanner(System.in);
Scanner leia2 = new Scanner(System.in);
Empresa emp = new Empresa();
Funcionario[] colaboradores = new Funcionario[10];
emp.setFuncionario(colaboradores); //emp.colaboradores = new Funcionario[2]; Metódo antigo
emp.setNomeEmpresa("SuperTi");
emp.setCnpj("100.100.100-90");
emp.setEndereco("Rua Logan, 11");
emp.setCidade("Cold Lake");
emp.setPais("Canadá");
System.out.println("\n\n\n##############################################################\n");
System.out.println("___________Preencher os dados dos funcionários___________\n");
for(int i = 0; i < emp.getLivre(); i++){
Funcionario f = new Funcionario();
f.dataEntrada = new Data();
System.out.print("| Nome: ");
f.setNome(leia1.nextLine());
System.out.print("| Departamento: ");
f.setDepart(leia1.nextLine());
System.out.print("| Digite a Data de entrada: ");
f.dataEntrada.setDataFormatada(leia2.nextInt(), leia2.nextInt(), leia2.nextInt());
System.out.print("| RG: ");
f.setRg(leia1.nextLine());
System.out.print("| Salário: ");
f.recebeAumento(leia2.nextDouble());
//System.out.println(emp.contem(f));
emp.adicionar(f);
emp.contem(emp.getColaboradores(emp.getLivre()));
}
emp.mostra();
//emp.mostraEmpregados();
System.out.println("\n##############################################################\n");
}
}