Ajuda com classes / Lógica e comandos

To começando a mecher com java esse semestre e a base dessa matéria era em java do semestre passado. Entao tem vários conceitos de java que o pessoal sabe que eu não sei e preciso correr atrás disso.

To tentando fazer alguns exercícios usando classes pra ver se entendo essa parada. Seria um programa pra fazer um cadastro armazenando o nome e a idade de uma pessoa.

Código da Classe “Cadastro”:

[code][code]public class Cadastro {

private String nome; // atributos do objeto
private int idade; // ao      

public String getNome() {
    contador++;
    return nome;
}

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

public int getIdade() {
    return idade;
}

public void setIdade(int idade) {
    this.idade = idade;
}

}[/code]

Até aí tranquilo né?
Código do Main:

[code] public static void main(String[] args) {
// TODO code application logic here

    Cadastro anna = new Cadastro();
    anna.setNome("Anna");  
    anna.setIdade(18);
    
    
    
    System.out.println("Nome "+ anna.getNome()+ "Idade" + anna.getIdade());
}[/code]

Nao sei se a sintaxe do println ta 100%, mas minha dúvida é a seguinte. Como eu faria pra fazer esse mesmo exemplo, só que que cadastrando nome e idade usando um JOptionPane e aramazendo em um array(isso é um vetor né?) eu sei como criar o array e tal mas nao consigo fazer armazenar usando esse esquema de classe. To confuso com essa parada

Valeu ae

Cara, você pode fazer algo assim:

String nome = JOptionPane.showInputDialog(null,"Digite o nome");
anna.setNome(nome);

O método showInputDialog retorna o que foi digitado no campo de texto do JOptionPane.

Quanto a armazenar num vetor, primeiro você precisa declarar um vetor de objetos da classe Cadastro. Você pode criar um vetor para qualquer tipo primitivo ou classe em Java. Note no exemplo abaixo, porém, que você precisa explicitar a quantidade de elementos que o vetor terá previamente (nesse caso, 5):

Cadastro listaCadastros[] = new Cadastro[5];

E depois, atribui um cadastro à posição desejada no vetor:

listaCadastros[0] = anna;

Não sei como será a lógica do seu aplicativo. Porém, uma dica: se você precisar criar um array que você não sabe o tamanho a priori, recomendo utilizar uma Collection como ArrayList ao invés de um vetor.

[]s

Ola,

pra mostrar com JOptionPane:

String smensagem = "Nome: "+ anna.getNome()+ " Idade: " + anna.getIdade();
JOptionPane.showMessageDialog( null, smensagem );

pra montar um array vc pode fazer assim:


Cadastro[] cadastro = new Cadastro[3];

Cadastro anna = new Cadastro();  
anna.setNome("Anna");    
anna.setIdade(18);  

Cadastro joao = new Cadastro();  
joao.setNome("João");    
joao.setIdade(19);  

cadastro[1] = anna;
cadastro[2] = joao;

ou vc pode usar list:

// aproveitando os objetos criados acima
ArrayList cadastro = new ArrayList();
cadastro.add( anna );
cadastro.add( joao );

entre outros exemplos.

[]s

Eu usei isso pra atribuir:

 anna.setNome(JOptionPane.showInputDialog("Nome"));

Nesse exemplo, eu to dando 2 nomes e duas idades.
Mas se eu quisesse recolher uns 5 nomes e 5 idades usando for ou while.

Como eu faria pra ele atribuir ao vetor? Porque nos exemplos que vocês deram e que eu dei supoem-se que sabemos os nomes e idades, né?
Mas como fica a atribuição sem conhecer os dados?

Obrigado pela ajuda ae pessoal.

BlacK,

O que eu recomendo é que você crie uma variável do tipo Cadastro dentro do loop, da seguinte forma:

[code]
Cadastro listaCadastros = new Cadastro[quantidadeCadastros];

for(int i = 0; i < quantidadeCadastros; i++){

Cadastro novoCadastro = new Cadastro();

//Aqui você seta os dados
novoCadastro.setNome(JOptionPane.showInputDialog("Nome"));
//(...)

//E aqui adiciona ao vetor
listaCadastros[i] = novoCadastro;

}[/code]

Repare que um novo objeto Cadastro é criado a cada iteração.

complementando o exemplo acima eu so acho q deveria mudar a estrutura de iteracao… ja que vc prentende executar sem saber a quantidade de registros. EU faria algo do tipo:


ArrayList cadastro = new ArrayList();
      
      do{

          Cadastro novoCadastro = new Cadastro(); 
         
         //Aqui você seta os dados  
          novoCadastro.setNome(JOptionPane.showInputDialog("Nome"));  
         //(...) 
         
         // usando um list vc nao precisa saber q quantidade de registros...
         cadastro.add( snome );
         

      }while( JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog( null, "Deseja Inserir mais pessoas?" ) );

No entanto, se não pretende usar ArrayList eh melhor usar o exemplo acima de definir a quantidade de posicoes.

[]