Dúvida na iteração do Array[Resolvido]

Srs. boa tarde,

Alguém poderia me informar onde estou errando ? o método mostraEmpregados() da classe Empresa não está imprimindo o nome e o salário dos funcionários . Agradeceria se alguém pudesse me tirar esta dúvida.

Grato,

public class Empresa
{
	String nomeDaEmpresa = "TESTE S/A";
	String cnpj = "05.021.369/0001-42";
	Funcionario[] empregados;
	
	public void adiciona( Funcionario f )
	{		
		
		for( int i = 0 ; i < empregados.length ; i++ )
		{
			empregados[i] = f;
		}
	}
	
	public void mostraEmpregados()
	{
		for( int i = 0 ; i < empregados.length ; i++ )
		{			
			System.out.printf("Empregado: %s Salário: R$ %.2f\n", 
					empregados[i].getNome().toUpperCase(), empregados[i].getSalarioAtual());
			
		}
	}

}

[code]
import java.util.Scanner;

public class TestaEmpresa
{
public static void main(String[] args)
{
Empresa empresa = new Empresa();

	empresa.empregados = new Funcionario[3];
			
	Scanner entrada = new Scanner(System.in);
	
	for( int i = 0 ; i < empresa.empregados.length ; i++ )
	{
		Funcionario f = new Funcionario();
		
		System.out.print("Nome: ");
		String nomeFunc = entrada.next();
		f.nome = nomeFunc;
		empresa.adiciona(f);
					
		System.out.print("Salário: R$ ");
		double sal = entrada.nextDouble();
		f.salarioAtual = sal;
		empresa.adiciona(f);
								
	}
	
	empresa.mostraEmpregados();
	
}

}[/code]

#     public void adiciona( Funcionario f )  
#     {         
#           
#         for( int i = 0 ; i < empregados.length ; i++ )  
#         {  
#             empregados[i] = f;  
#         }  
#     } 

O código que você escreveu adiciona o mesmo funcionário em todas as posições do array de empregados. É isso que você quer?

Não. Eu quero que cada posição tenha um funcionário com um salário diferente.

cara,

da uma lida nos conceitos de criação de atributos em uma entidade.
vou postar o seu codigo, mas é para vc estudar heinn…

public class Empresa {
	private String nomeDaEmpresa;
	private String cnpj;
	private Funcionario[] empregados;
	
	public Empresa(){
		this.nomeDaEmpresa = "TESTE S/A";
		this.cnpj = "05.021.369/0001-42";
		this.empregados = new Funcionario[3];
	}

	public void adiciona(Funcionario funcionario, int index) {
		empregados[index] = funcionario;
	}

	public void mostraEmpregados() {
		for (Funcionario funcionario : empregados) {
			System.out.printf("Empregado: %s Salário: R$ %.2f\n", funcionario.getNome().toUpperCase(), funcionario.getSalarioAtual());

		}
	}

	public String getNomeDaEmpresa() {
		return nomeDaEmpresa;
	}

	public void setNomeDaEmpresa(String nomeDaEmpresa) {
		this.nomeDaEmpresa = nomeDaEmpresa;
	}

	public String getCnpj() {
		return cnpj;
	}

	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}

	public Funcionario[] getEmpregados() {
		return empregados;
	}

	public void setEmpregados(Funcionario[] empregados) {
		this.empregados = empregados;
	}
}
import java.util.Scanner;

public class TestaEmpresa {
	public static void main(String[] args) {
		Empresa empresa = new Empresa();

		Scanner entrada = new Scanner(System.in);

		for( int i = 0 ; i < empresa.getEmpregados.length ; i++ ){
			funcionario = new Funcionario();

			System.out.print("Nome: ");
			funcionario.setNome(entrada.next());

			System.out.print("Salário: R$ ");
			funcionario.setSalarioAtual(entrada.nextDouble());
			
			empresa.adiciona(f, i);
		}

		empresa.mostraEmpregados();
	}
}

t+

Allisonvia,

Obrigado pela atenção. Com certeza estudarei o código.

Abs,

estou passando pelo mesmo problema mas acontece que esse metodo adiciona que vc colocou usando esta variavel index difere do que o enunciado do exercico manda fazer. o enunciado manda voce iniciar o metodo assim

void adiciona(Funcionario f) {
// algo tipo:
// this.empregados[ ??? ] = f;
// mas que posição colocar?
}

ai acontece comigo o mesmo problema… o salario de todos aparece igual… ate aqui tava entendendo tranquilo agora que começou array ta complicado, rsrs abraço

Eu dei prosseguimento aos estudos mas para não ficar parado neste ponto alterei o exercício. Mais tarde lerei novamente.