Estou compilando e enfrentando o seguinte erro:
ProgramaEmpresa.java:9: error unexpected type emp1.getFuncionario(0) = new Funcionari[10]; // Apontando para o inicio do pareteses.
required: variable
found: value
o mesmo erro se repeti na linha 11.
Estou compilando e enfrentando o seguinte erro:
ProgramaEmpresa.java:9: error unexpected type emp1.getFuncionario(0) = new Funcionari[10]; // Apontando para o inicio do pareteses.
required: variable
found: value
o mesmo erro se repeti na linha 11.
Segue o código:
class ProgramaEmpresa {
public static void main(String[] args) {
Empresa emp1 = new Empresa();
emp1.setNomeEmpresa("MicroAPP");
emp1.setCnpj("45678912");
emp1.getFuncionario(0) = new Funcionario[10];
emp1.getFuncionario(0) = new Funcionario();
emp1.getFuncionario(0).setNomeFuncionario("PABLO DE ABREU");
emp1.getFuncionario(0).setCpf("456789123");
emp1.getFuncionario(0).setFuncao("TI");
emp1.getFuncionario(0).setSalario(5000.00);
emp1.getFuncionario(0).setAumento(500.00);
//emp1.funcionarios[0].dataDeEntrada = new Data(); // não preciso mais deste new porque ja faço isso em Empresa.
emp1.getFuncionario(0).setDataDeEntrada(20,02,1988);
emp1.mostraTodasAsInformacoes();
}
}
Oi Pablo, posta o código da sua classe Empresa também.
Segue o código da classe Empresa. Em comentários tem uma tentativa de setFuncionario
class Empresa {
private String nomeEmpresa;
public void setNomeEmpresa(String nome) {
this.nomeEmpresa = nome;
}
public String getNomeEmpresa() {
return this.nomeEmpresa;
}
private String cnpj;
public void setCnpj(String texto) {
this.cnpj = texto;
}
public String getCnpj() {
return this.cnpj;
}
private Funcionario[] funcionarios;
/*public void setFuncionario() {
Funcionario newFuncionario[posicao] = new Funcionario();
newFuncionario.
this.funcionarios = newFuncionario[posicao];
}*/
public Funcionario getFuncionario(int posicao) {
return this.funcionarios[posicao];
}
private int livre = 0;
private void adiciona(Funcionario f){ // metodo para adicionar funcionarios.
this.funcionarios[this.livre] = f;
this.livre++;
}
public void mostraTodasAsInformacoes() {
System.out.println();
System.out.println("*************************");
System.out.println("A empresa: " + getNomeEmpresa());
System.out.println("Com o CNPJ: " + getCnpj());
System.out.println("*************************");
System.out.println();
for(int i = 0; i < this.funcionarios.length; i++) {
Funcionario funcionario = this.funcionarios[i];
if(funcionario == null) continue;
funcionario.mostra();
System.out.println("Funcionario na posicao: " + i);
}
}
}
class Funcionario {
private String nomeFuncionario;
public void setNomeFuncionario(String texto) { // set para eu digitar em ProgramaEmpresa o valor da variavel.
this.nomeFuncionario = texto;
}
public String getNomeFuncionario() { // get para eu pegar o valor dessa varia e imprimir por ex.
return this.nomeFuncionario;
}
private String cpf;
public void setCpf(String texto) {
this.cpf = texto;
}
public String getCpf() {
return this.cpf;
}
private String funcao;
public void setFuncao(String texto) {
this.funcao = texto;
}
public String getFuncao() {
return this.funcao;
}
private double salario;
public void setSalario(double valor) {
this.salario = valor;
}
public double getSalario() {
return this.salario;
}
private double aumento;
public void setAumento(double valor) {
this.aumento = valor;
}
public double getAumento() {
return this.aumento;
}
private double calculaGanhoAnual() {
return this.salario * 12;
}
public double getCalculoGanhoAnual() {
return this.calculaGanhoAnual();
}
private double calculaGanhoAnualComAumento() {
return this.getAumento() * 12;
}
public double getCalculoGanhoAnualComAumento() {
return this.calculaGanhoAnualComAumento();
}
private Data dataDeEntrada;
public Data getDataDeEntrada() {
return dataDeEntrada;
}
public void setDataDeEntrada(int dia, int mes, int ano) {
Data newData = new Data(); // aqui estou criando um new Data(), sem precisar criar no ProgramaEmpresa.
newData.preencheData(dia, mes, ano); // aqui digo que o newData é o preencheData().
this.dataDeEntrada = newData; // aqui digo que o newData é = a this.dataDeEntrada enviando o valor do setDataDeEntrada para dataDeEntrada.
}
private int idade() {
return 2017 - this.dataDeEntrada.ano;
}
public void mostra() {
System.out.println("===========================================================");
System.out.println();
System.out.println("****************************************************************");
System.out.println(" MOSTRANDO TODAS AS INFORMACOES DO FUNCIONARIO " + this.nomeFuncionario);
System.out.println("****************************************************************");
System.out.println();
System.out.println("o funcionario: " + this.getNomeFuncionario());
System.out.println("Tem CPF: " + this.getCpf());
System.out.println("Ocupa o cargo: " + this.getFuncao());
System.out.println("Sua idade e: " + this.idade());
System.out.println("Entrou na empresa em: " + this.dataDeEntrada.getFormatadaData());
System.out.println("Recebe a quantia de: " + this.getSalario());
System.out.println("Teve um aumento de: " + this.aumento);
System.out.println("Seu salario mais aumento somam: " + this.getAumento());
System.out.println("Tendo ganho anual de: " + getCalculoGanhoAnual() + " sem o aumento.");
System.out.println("Com seu aumento o Ganho Anual passa a: " + this.getCalculoGanhoAnualComAumento());
}
}
class Data {
public int dia;
public int mes;
public int ano;
public void preencheData(int dia, int mes, int ano) {
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
public String getFormatadaData() {
return this.dia + "/" + this.mes + "/" + this.ano;
}
}
Olá Pablo, eu fiz algumas alterações para que seu código possa rodar,coloquei comentários tentando explicar o que alterei, qualquer dúvida só falar. Abaixo disponibilizei as classes que fiz alteração.
class Empresa {
// Como o seu funcionário está como privado, não há como deterimar
// diretamente na classe de teste, para fazer isso eu criei um
// constructor para no momento em que você der new Empresa já poder
// passar a quantidade de funcionários que essa empresa terá.
public Empresa(int i) {
this.funcionarios = new Funcionario[i];
}
private String nomeEmpresa;
public void setNomeEmpresa(String nome) {
this.nomeEmpresa = nome;
}
public String getNomeEmpresa() {
return this.nomeEmpresa;
}
private String cnpj;
public void setCnpj(String texto) {
this.cnpj = texto;
}
public String getCnpj() {
return this.cnpj;
}
private Funcionario[] funcionarios;
/*
* public void setFuncionario() { Funcionario newFuncionario[posicao] = new
* Funcionario(); newFuncionario. this.funcionarios = newFuncionario[posicao]; }
*/
public Funcionario getFuncionario(int posicao) {
return this.funcionarios[posicao];
}
private int livre = 0;
// Alterei o método adiciona funcionário para ele ficar public e poder ser
// utilizado pela classe de teste.
public void adiciona(Funcionario f) { // metodo para adicionar funcionarios.
this.funcionarios[this.livre] = f;
this.livre++;
}
public void mostraTodasAsInformacoes() {
System.out.println();
System.out.println("*************************");
System.out.println("A empresa: " + getNomeEmpresa());
System.out.println("Com o CNPJ: " + getCnpj());
System.out.println("*************************");
System.out.println();
for (int i = 0; i < this.funcionarios.length; i++) {
Funcionario funcionario = this.funcionarios[i];
if (funcionario == null)
continue;
funcionario.mostra();
System.out.println("Funcionario na posicao: " + i);
}
}
}
class ProgramaEmpresa {
public static void main(String[] args) {
Empresa emp1 = new Empresa(10); // Constructor da empresa determinando a quantidade
// de Funcnionários
emp1.setNomeEmpresa("MicroAPP");
emp1.setCnpj("45678912");
// Conforme o código você deve primeiro criar um Funcionário
// para depois passar ele pelo método adiciona
//emp1.getFuncionario(0) = new Funcionario[10];
Funcionario f1 = new Funcionario();
emp1.adiciona(f1);
//emp1.getFuncionario(0) = new Funcionario(); // já foi criado um Funcionário
emp1.getFuncionario(0).setNomeFuncionario("PABLO DE ABREU");
emp1.getFuncionario(0).setCpf("456789123");
emp1.getFuncionario(0).setFuncao("TI");
emp1.getFuncionario(0).setSalario(5000.00);
emp1.getFuncionario(0).setAumento(500.00);
// emp1.funcionarios[0].dataDeEntrada = new Data(); // não preciso mais deste
// new porque ja faço isso em Empresa.
emp1.getFuncionario(0).setDataDeEntrada(20, 02, 1988);
emp1.mostraTodasAsInformacoes();
}
}
Obrigado Joel! Deu certinho aqui...
Fiquei só com uma dúvida: Porque foi preciso criar a variável Empresa?
public Empresa(int i) {
this.funcionarios = new Funcionario[i];
}
Até então não tinha criado a variável com mesmo nome de minha classe principal!
Bom Pablo, nesse caso não é uma variável, é um método, e dá forma como foi criado é chamado método construtor, toda classe tem um construtor, e nesse caso implementamos o nosso próprio construtor, mas fica tranquilo que esse assunto será tratado mais para a frente no curso, e se não me engano a implementação será a mesma.
ok! Obrigado Joel Spinelli.