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

6 respostas
Paulo_Mour

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());
			
		}
	}

}
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();
		
	}

}

6 Respostas

E
#     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?

Paulo_Mour

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

A

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+

Paulo_Mour

Allisonvia,

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

Abs,

bacilos

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

Paulo_Mour

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

Criado 20 de outubro de 2011
Ultima resposta 1 de nov. de 2011
Respostas 6
Participantes 4