LinkedHashMap

2 respostas
S

Olá tenho o seguinte codigo e preciso fazer a soma do salario, mas a soma nao esta sendo feito corretamente, esta imprimindo o ultumo salario somente.

package testeLinkedHashMap;

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

public class Main {

	public static Funcionario funcionario1;
	public static Funcionario funcionario2;
	public static Funcionario funcionario3;
	public static Map<Integer, Funcionario> listaFuncionarios;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		listaFuncionarios = new LinkedHashMap<Integer, Funcionario>();
		
		funcionario1 = new Funcionario();
		funcionario1.setId(001);
		funcionario1.setSalario(4);
		listaFuncionarios.put(funcionario1.getId(), funcionario1);
		
		funcionario2 = new Funcionario();
		funcionario2.setId(002);
		funcionario2.setSalario(9);
		listaFuncionarios.put(funcionario1.getId(), funcionario2);
		
		funcionario3 = new Funcionario();
		funcionario3.setId(003);
		funcionario3.setSalario(2);
		listaFuncionarios.put(funcionario1.getId(), funcionario3);
		
		somaSalario();
	}
	
	public static void somaSalario() {
		int notas = 0;
		Iterator<Integer> it = listaFuncionarios.keySet().iterator();
		while (it.hasNext()) {
			int key = it.next();
			notas += listaFuncionarios.get(key).getSalario();
		}
		System.out.println("NOTAS: " + notas);
	}

}

Alguem pode me auxilia?

2 Respostas

Rodrigo_Sasaki

Você está adicionando os 3 funcionários com o id do primeiro, revise seu código :slight_smile:

sergiotaborda

spiderman:
Olá tenho o seguinte codigo e preciso fazer a soma do salario, mas a soma nao esta sendo feito corretamente, esta imprimindo o ultumo salario somente.

package testeLinkedHashMap;

import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

public class Main {

	public static Funcionario funcionario1;
	public static Funcionario funcionario2;
	public static Funcionario funcionario3;
	public static Map<Integer, Funcionario> listaFuncionarios;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		listaFuncionarios = new LinkedHashMap<Integer, Funcionario>();
		
		funcionario1 = new Funcionario();
		funcionario1.setId(001);
		funcionario1.setSalario(4);
		listaFuncionarios.put(funcionario1.getId(), funcionario1);
		
		funcionario2 = new Funcionario();
		funcionario2.setId(002);
		funcionario2.setSalario(9);
		listaFuncionarios.put(funcionario1.getId(), funcionario2);
		
		funcionario3 = new Funcionario();
		funcionario3.setId(003);
		funcionario3.setSalario(2);
		listaFuncionarios.put(funcionario1.getId(), funcionario3);
		
		somaSalario();
	}
	
	public static void somaSalario() {
		int notas = 0;
		Iterator<Integer> it = listaFuncionarios.keySet().iterator();
		while (it.hasNext()) {
			int key = it.next();
			notas += listaFuncionarios.get(key).getSalario();
		}
		System.out.println("NOTAS: " + notas);
	}

}

Alguem pode me auxilia?

Cuidado que 001 não é a mesma coisa que 1. Em java números que começam com zero representam números que estão em outra base que não a decimal.
Depois, é assim que se itera um mapa

int salario= 0;
for (Funcionario funcionarion : listFuncionarios.value()){
         salario+= funcionario.getSalario();
}

Agora, porque não dá o resultado certo não sei. Embora vc não esteja usando a melhores práticas não vejo razão para não funcionar. Tlv outro alguem consiga quebrar esse enigma.

Criado 7 de fevereiro de 2013
Ultima resposta 7 de fev. de 2013
Respostas 2
Participantes 3