Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

megaducker

arrays

Recommended Posts

Boa noite pessoal do Imasters (:

 

bom sou estudante de processamento de dados e me foi proposto fazer alguns exercicios, e me deparei com um que não consigo fazer, pois ele pede que se faça uma classe que receba nome e sexo de 10 pessoas e depois imprima separado por grupos;

exemplo:

homens: paulo - joao - tiago

mulheres: maria - sara - ana

 

enfim, eu acho que é pra se fazer com um array, e depois um laço de repetição(for) para se imprimir os dados pedidos, mas não sei como fazer isso ;s

desde já agradeço

 

att

Megaducker

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Megaducker.

 

A lógica do seu exercício consiste primeiro em voce criar um classe "Pessoa" com os atributos nome e sexo e encapsulá-los, ai sim, criaremos um ArrayList para armazenar os objetos Pessoas, onde este arraylist pode ser acessado através de um método getListPessoas, assim:

 


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class TestePessoas {

   private static List<Pessoa> pess = null;

   public static void main(String[] args){
       // Inserindo Pessoas
       getListPessoas().add(new Pessoa("Paulo","Masculino"));
       getListPessoas().add(new Pessoa("Maria","Feminino"));
       getListPessoas().add(new Pessoa("João","Masculino"));
       getListPessoas().add(new Pessoa("Sara","Feminino"));
       getListPessoas().add(new Pessoa("Tiago","Masculino"));
       getListPessoas().add(new Pessoa("Ana","Feminino"));

       //Listando as pessoas do sexo feminino
       Iterator I = getListPessoas().iterator();
       while (I.hasNext()){
           Pessoa p = (Pessoa)I.next();
           if (p.getSexo().equals("Feminino")){
               // Agora faça o resto do exercício para voce aprender
           }
       }

   }

   static List<Pessoa> getListPessoas(){
       if (pess == null) pess = new ArrayList<Pessoa>();
       return pess;
   }

   static class Pessoa {

      private String nome, sexo;

      public Pessoa(){}

      public Pessoa(String nome, String sexo){
               this.nome = nome;
               this.sexo = sexo;
      }

      public String getNome(){
              return nome;
      }

      public void setNome(String nome){
             this.nome = nome;
      }

      public String getSexo(){
            return sexo;
      }

      public void setSexo(String sexo){
           this.sexo = sexo;
      }
  }
}

 

Bom, acho que eu já fiz 90% do exercício pra voce nê, apenas fiz para que voce possa ter uma idéia, de como a orientação a objetos do java, pode lhe ser útil até em programas simples, utilizando métodos.

 

Só não acostuma tá tongue.gifdry.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Discorpio,

 

Como ele é iniciante, creio que nem faz ideia do que seja a API Collections do Java. O problema dele é com matrizes. Mas se ele seguir o seu raciocínio, não terá problemas!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde a todos.

Discorpio,

 

Como ele é iniciante, creio que nem faz ideia do que seja a API Collections do Java. O problema dele é com matrizes. Mas se ele seguir o seu raciocínio, não terá problemas!

 

Sim Vergil, eu sei.

 

E presumo também que ele não saiba os conceitos de POO, entretanto, não há como deixar de criar a classe Pessoa, pois não se pode trabalhar os atributos Nome e Sexo isoladamente.

 

Contundo, seguindo o seu raciocínio de matrizes, podemos fazer também um Array da classe Pessoa, então vejamos.

 


 public class TestePessoas {

      private Pessoa[] pess = null;

  	public static void main(String[] args){
             // Aqui eu tenho que engessar o número de pessoas em 6
             pess = new Pessoa[6];
             pess[0] = new Pessoa("Paulo","Masculino");
             pess[1] = new Pessoa("Maria","Feminino");
             pess[2] = new Pessoa("João","Masculino");
             pess[3] = new Pessoa("Sara","Feminino");
             pess[4] = new Pessoa("Tiago","Masculino");
             pess[5] = new Pessoa("Ana","Feminino");

             //Listando as pessoas do sexo feminino
             System.out.println("_________________________________");
             System.out.println("Pessoas do sexo feminino");
             for (int i = 0; i < 6; i++){
                   if (pess[i].getSexo().equals("Feminino")){
                         System.out.println("Nome: "+pess[i].getNome());
                   }
             }

             System.out.println("_________________________________");
             System.out.println("Pessoas do sexo masculino");
             for (int i = 0; i < 6; i++){
                   if (pess[i].getSexo().equals("Masculino")){
                    	System.out.println("Nome: "+pess[i].getNome());
                	}
             }
       }

       static class Pessoa {

           private String nome, sexo;

           public Pessoa(){}

           public Pessoa(String nome, String sexo){
              	this.nome = nome;
              	this.sexo = sexo;
           }

           public String getNome(){
                 return nome;
           }

           public void setNome(String nome){
                 this.nome = nome;
           }

      	public String getSexo(){
            	return sexo;
      	}

      	public void setSexo(String sexo){
            	this.sexo = sexo;
      	}
  }

}

 

A única diferença deste código para o anterior, que ao instanciar o array da classe Pessoa, eu tenho que delimitar o índice do array, delimitando e engessando assim o número de pessoas no array.

 

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não há necessidade do campo estático para a lista de pessoas, já que a única coisa que o container faz é fornecer uma referência ao ArrayList de Pessoas. Em main:

 

List<Pessoa> lista = new ArrayList<Pessoa>();

// operar sobre 'lista', ao invés de chamar 'getListPessoas'

 

Sobre a solução que emprega arrays, sugiro usar um array de 2 arrays - um para cada sexo. Assim não é necessário percorrer todos os indivíduos do sexo oposto quando se quer apenas os de determinado sexo. Isso implicaria, obviamente, em confiar que não existem mudanças de sexo - ou seja, que o método setSexo não existe em Pessoa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para "começar" a aprender as coisas post aki o q você fez daí em diante o pessoal vai ajudando e você vai fazendo, ok, fica a dica para próxima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.