2013/01/28

Dicas Java - Ordenação alfabética de Objeto.Atributo

new Comment();
Exemplo de como ordenar facilmente um objeto alfabeticamente pelo nome


Classe Pessoa Ex2Pessoa.java


public class Ex2Pessoa implements Comparable {
 private String nome;
 private int idade;
 private int sexo;
 private int vacinada;
 
 public String getNome() {
  return nome;
 }
 public void setNome(String nome) {
  this.nome = nome;
 }
 public int getIdade() {
  return idade;
 }
 public void setIdade(int idade) {
  this.idade = idade;
 }
 public int getSexo() {
  return sexo;
 }
 public void setSexo(int sexo) {
  this.sexo = sexo;
 }
 public int getVacinada() {
  return vacinada;
 }
 public void setVacinada(int vacinada) {
  this.vacinada = vacinada;
 }
 @Override
 public int compareTo(Ex2Pessoa o) {
  // TODO Auto-generated method stub
  return 0;
 }
 
}
Classe principal Ex2.java

/*
 * 1) Crie uma classe Pessoa contendo os seguintes atributos: nome, idade, sexo e vacinada. 
Use esta classe para efetuar uma pesquisa sobre dengue
envolvendo 10 pessoas. Uma vez finalizado a leitura dos dados, mostre:

a) A quantidade de mulheres pesquisadas;
b) A porcentagem de homens que se vacinaram contra dengue (em relação à quantidade de homens pesquisados);
c) A porcentagem de mulheres com idade inferior a 18 e que se vacinaram (em relação à quantidade de mulheres pesquisadas);
d) A porcentagem de homens pesquisados (em relação ao total de pessoas pesquisadas).
e) Os nomes e demais dados de todos os pesquisados, ordenados alfabeticamente pelo nome.
 */

import javax.swing.JOptionPane;

public class Ex2 {
 public static void main(String[] args){
  Ex2Pessoa a[] = new Ex2Pessoa[2];
  int quanHomemVacinados   = 0;
  int quanHomem     = 0;
  int quanMulher     = 0;
  int quanMuInf18Vacin   = 0;

  //Informamos valores
  for (int i = 0; i < a.length; i++) {
   a[i] = new Ex2Pessoa();
   a[i].setNome(JOptionPane.showInputDialog("Digite nome"));
   a[i].setIdade(Integer.parseInt(JOptionPane.showInputDialog("Digite edade")));
   a[i].setSexo(Integer.parseInt(JOptionPane.showInputDialog("Digite sexo\n1.Mulher - 2.Homem")));
   if (a[i].getSexo() == 2) {
    quanHomem++;
   }
   if (a[i].getSexo() == 1) {
    quanMulher++;
   }
   a[i].setVacinada(Integer.parseInt(JOptionPane.showInputDialog("Foi vacinado?\n1.Sim - 2.Não")));
   
   //Calculamos homens vacinados
   if (a[i].getSexo() == 2 & a[i].getVacinada()== 1) {
    quanHomemVacinados++;
   }
   if (a[i].getSexo() == 1 & a[i].getIdade() < 18 & a[i].getVacinada() == 1) {
    quanMuInf18Vacin++;
   }
  }
  
  //Mostramos quantidade de mulheres pesquisadas
  JOptionPane.showMessageDialog(null, "Quantidade de mulheres pesquisadas: "+ quanMulher);
  
  //Mostramos porcentagem de homens que se vacinaram contra dengue
  JOptionPane.showMessageDialog(null, "Porcentagem de homens que se vacinaram contra dengue: "+(quanHomemVacinados/quanHomem)*100);
  
  //Mostramos porcentagem de mulheres com idade inferior a 18 e que se vacinaram
  JOptionPane.showMessageDialog(null, "Porcentagem de mulheres < 18 vacinadas: "+(quanMuInf18Vacin/quanMulher)*100);

  //A porcentagem de homens pesquisados
  JOptionPane.showMessageDialog(null, "Porcentagem de homens pesquisados: "+(quanHomem/a.length)*100);
  
  //Ordenamos os nomes de todas as pessoas pesquisadas alfabeticamente
  for(int i = 0; i < a.length; i++){
   for(int j = 0; j < a.length; j++){
    if(a[i].getNome().compareTo(a[j].getNome()) < 0){
     Ex2Pessoa temp = a[i];
     a[i] = a[j];
     a[j] = temp;
    }
   }
  }
  
  String resultado = "";
  for(int i = 0; i < a.length; i++){
   resultado = resultado + a[i].getNome() + " - " + a[i].getIdade() + "\n\n";
  }

  JOptionPane.showMessageDialog(null, resultado);
 }
}
If You Enjoyed This, Take 5 Seconds To Share It

0 comentarios:

Postar um comentário