ainda continua imprimindo errado
Posta se novo código de cadastro
void cadastro(Pessoa pessoa) {
System.out.println("digite o número de pessoas para o cadastro: ");
int numero = in.nextInt();
this.lista = new Pessoa[numero];
for (int i = 0; i<lista.length; i++) {
System.out.println("digite o nome da pessoa: ");
nome = in.next();
System.out.println("digite a idade: ");
idade = in.nextInt();
if(lista[i] == null) {
lista[i] = pessoa;
}
else {
System.out.println("não foi possível cadastrar. ");
}
}
eu preciso que o usuário digite quantas pessoas ele quer cadastrar
Cara na verdade o que esta acontecendo é o seguinte, quando você chama o método:
cadastro(pessoa);
você cadastra esta pessoa duas vezes, por causa do comando:
for (int i = 0; i<lista.length; i++) {
…}
Então quando você chama esse metodo pela segunda vez a sua lista ja esta cheia. Poderia passar o código aqui mas prefiro te ajudar a fazer.
Se estiver de acordo vamos usar 3 classes:
Classe Pessoa:
onde só vai ter os dados da pessoa no caso nome e idade;
Classe Cadastro:
Onde vai ter o atributo:
Pessoa lista[];
e os metodos cadastrar e imprimir
E a classe Programa
Que é a que vai executar o programa.
public class Pessoa {
String nome;
int idade;
}
public class CadastroDePessoas{
public Pessoa lista[];
public void cadastrar(Pessoa pessoa){
}
public void imprimir(){
}
}
public class Programa {
public static void main(String args[]){
}
}
As classes seriam assim
mas eu preciso que o usuário digite o número de pessoas para o cadastro
E vai digitar mas na classe programa, não na cadastro
e como meu metodo cadastro vai saber quantas pessoas ele deve cadastrar?
CadastroDePessoas cp = new CadastroDePessoas ();
System.out.println ("digite quantidade");
int quant = in.nextInt ();
cp.lista = new lista [quant];
vou tentar desse jeito
Esso vai na aplicação ou seja no metodo main da classe Programa. E nessa classe tb vai digitar o nome e a idade
aqui não seria = new Pessoa[quant]?
Nao seria lista que é onde vai cadastrar as pessoas na classe CadastroDePessoas
como eu arrumo esse negocio de ficar cadastrando a mesma pessoa 2 vezes? o que fiz de errado no meu método?
mas da erro de compilação quando eu ponho lista
Pra concetar se código.
Crie um atributo por exemplo:
int topo = -1;
No metodo remove o for e faz o seguinte:
topo++;
lista [topo] = pessoa;
Vou escrever classe por classe aqui
e qual seria a condição para que isso aconteça? se a lista[topo] == null aí eu devo inserir a pessoa na posição topo++?
public class CadastroDePessoas {
Pessoa lista [];
int topo= -1;
public void cadatrar (Pessoa pessoa){
topo = topo+1;
lista [topo];
}
public void imprimir (){
for (int i = 0; i < lista.length; i++){
System.out.println ("nome: " + lista [i].nome + " -> " + lista [i].idade);
}
}
}
Você coloca essa condição na classe Programa
if (cp.topo < cp.lista.length){
cp.cadastro (pessoa)
}else {
System.out.println ("Lista cheia");
}