Olá Antonio,
indentando o seu código olha como ele fica:
class Empresa {
int cnpjEmp;
String nomeEmp;
int livre=0;
Funcionario[] func;
void adiciona(Funcionario f) {
this.func[this.livre] = f; this.livre++;
}
void mostra(){
for(int i=0;i<this.func.length;i++){
Funcionario funcio = this.func[i];
if (funcio==null)
continue;
System.out.println(funcio.salFun);
}
}
//Funcionario dentro de Empresa
class Funcionario{
String nomeFun;
double salFun;
}
//TesteArray dentro de Empresa
class TesteArray{
public static void main(String[] args){
Empresa empresa1 = new Empresa();
//empresa1.cnpjEmp = 451212145;
//empresa1.nomeEmp = "FlexTronics";
empresa1.func = new Funcionario[10];
Funcionario f1 = new Funcionario();
f1.nomeFun = "Natan Boschini";
f1.salFun = 3200.0; empresa1.adiciona(f1);
Funcionario f2 = new Funcionario();
f2.nomeFun = "Marcelo Gadioli";
f2.salFun = 4200.0; empresa1.adiciona(f2);
empresa1.func[0].mostra();
empresa1.func[1].mostra();
}
}
}
Note que a classe Funcionario
e TesteArray
ficaram dentro da classe Empresa
. Quase todos esses erros de compilação que você teve decorrem desse fato. Para não ter esse problema, a convenção do Java é que para cada arquivo .java
tenha apenas 1 classe e que o nome da classe tem que ser igual ao nome do arquivo. Por exemplo, tente colocar toda a class Funcionario
no arquivo Funcionario.java
. Faça a mesma coisa para as classes Empresa
e TesteArray
. Basta que você deixe os 3 arquivos na mesma pasta que conseguirá compilar cada um deles e executar o TesteArray
.
Um outro erro de compilação que você terá são nas linhas:
empresa1.func[0].mostra();
empresa1.func[1].mostra();
Note que aqui você acessa duas posições do array de func
de empresa1
, sendo um array do tipo Funcionario
, e depois chama o método mostra
. Como a posição guarda um Funcionario
, então você está tentando chamar o método mostra
do Funcionario
. Mas olha como está a classe:
class Funcionario{
String nomeFun;
double salFun;
}
Ela não tem nenhum método mostra
.Quem que tem esse método? A partir de quem você tem que chamar o método mostra
? Tente descobrir como consegue resolver este problema do método.
Abraços