Estou aprendendo o sobre hashmap, mas não consigo encontrar para resolver problemas para receber as informações.
Aluno
publicclassAluno{privateintmatricula;privateStringnomeAluno;privatedoublenota;publicAluno(intmat,Stringnome,doublenota){this.matricula=mat;this.nomeAluno=nome;this.nota=nota;}// Metodos do Setters e Getters
UsandoHashMap
publicclassUsandoHashMaps{privateHashMap<Integer,Aluno>mapeamentoDeAluno;publicvoidusandoHashMap(intgetMatricula,Alunoa){mapeamentoDeAluno=newHashMap<Integer,Aluno>();mapeamentoDeAluno.put(a.getMatricula(),a);}publicvoidentradaUsuario(){intvalorDigitadoInt=0;StringvalorDigitado=JOptionPane.showInputDialog(null,"Digita o número da Matricula","Entrada de dados",JOptionPane.DEFAULT_OPTION);try{valorDigitadoInt=Integer.parseInt(valorDigitado);if(!mapeamentoDeAluno.containsKey(valorDigitado)){thrownewException();}System.out.println("-----Perfil do Aluno------");System.out.println("Nome: "+mapeamentoDeAluno.get(valorDigitado).getNomeAluno());System.out.println("Matricula: "+mapeamentoDeAluno.get(valorDigitado).getMatricula());System.out.println("Nota: "+mapeamentoDeAluno.get(valorDigitado).getNota());System.out.println();}catch(NumberFormatExceptione){// TODO Auto-generated catch blocke.printStackTrace();}catch(Exceptione){JOptionPane.showMessageDialog(null,"Não existe essa matricula","Erro",JOptionPane.ERROR_MESSAGE);e.printStackTrace();}}}
Percebe que você instancia o hash a cada chamada do método? Sempre, eu disse, sempre, o seu hashmap irá conter apenas um único aluno.
A idéia de usar o número da matricula como chave, achei interessante, a partir da matrícula do aluno retorna os dados do mesmo.
Apenas reveja a sua lógica e necessidade.
Abraços.
nel
lelodois:
Mude o momento que vc instancia o hashmap.
private HashMap<Integer, Aluno> mapeamentoDeAluno = new HashMap<Integer, Aluno>();
método
public void usandoHashMap(int getMatricula,Aluno a){
mapeamentoDeAluno.put(a.getMatricula(), a);
}
Abraços
Particularmente, sou contra esse tipo de instanciamento.
Prefiro que seja feito ou via class loader ou no próprio construtor, o que acho mais interessante.
Abraços.
lelodois
nel:
lelodois:
Mude o momento que vc instancia o hashmap.
private HashMap<Integer, Aluno> mapeamentoDeAluno = new HashMap<Integer, Aluno>();
método
public void usandoHashMap(int getMatricula,Aluno a){
mapeamentoDeAluno.put(a.getMatricula(), a);
}
Abraços
Particularmente, sou contra esse tipo de instanciamento.
Prefiro que seja feito ou via class loader ou no próprio construtor, o que acho mais interessante.
Abraços.
Acredito que no contexto atual é indiferente o momento da instanciação....
jsnpereira
lelodois:
nel:
lelodois:
Mude o momento que vc instancia o hashmap.
private HashMap<Integer, Aluno> mapeamentoDeAluno = new HashMap<Integer, Aluno>();
método
public void usandoHashMap(int getMatricula,Aluno a){
mapeamentoDeAluno.put(a.getMatricula(), a);
}
Abraços
Por que decidi tirar o construtor e
Particularmente, sou contra esse tipo de instanciamento.
Prefiro que seja feito ou via class loader ou no próprio construtor, o que acho mais interessante.
Abraços.
Acredito que no contexto atual é indiferente o momento da instanciação....
Acabei de conseguir resolver a programar e funcionou perfeitamente, é diferente tutorial que eu pensei fazer... veja ai
Classe Aluno
publicclassAluno{privateintmatricula;privateStringnomeAluno;privatedoublenota;// Metodos Getters e Setters
Run as > Java application e fecha o olho.
rsrsrsrs
nel
Olá!
Duas observações que eu gostaria de fazer.
1 - Caso seu problema tenha sido resolvido, coloque [Resolvido] ao lado do seu tópico, basta edita-lo. Assim, ninguém acessa ele pensando que você ainda precisa de algo.
2 - Se você simplesmente copiou, colou e rodou em sua máquina um código “achado” na internet e tens o intuito de aprender Java, aconselho a entender muito bem o que o código faz, executar modificações, testes, caso contrário, vai estar se enganando e não irá aprender nada.
Abraços.
jsnpereira
nel:
Olá!
Duas observações que eu gostaria de fazer.
1 - Caso seu problema tenha sido resolvido, coloque [Resolvido] ao lado do seu tópico, basta edita-lo. Assim, ninguém acessa ele pensando que você ainda precisa de algo.
2 - Se você simplesmente copiou, colou e rodou em sua máquina um código “achado” na internet e tens o intuito de aprender Java, aconselho a entender muito bem o que o código faz, executar modificações, testes, caso contrário, vai estar se enganando e não irá aprender nada.
Abraços.
obrigado pela dica preciso colocar resolvido, mas colocar [resolvido] assunto principal do topico, eu não encontrei isso…
ah! você acha que estou copiado tudo código para rodar a máquina, não… quando material nova aproveitar ler e treinar, por quando caso encontrar os erros, tento corrigir até descobrindo para resolver as problemas, treinando as novas manterias e fazendo práticas pelo exercícios. valeu!!!
nel
Show de bola!!
Para editar o tópico, quando mandar editar uma mensagem verá que é possível editar o topico, tem post aqui no guj que ensina isso.
Abraços.