Você coloca essa condição na classe Programa
if (cp.topo < cp.lista.length){
cp.cadastro (pessoa)
}else {
System.out.println ("Lista cheia");
}
Você coloca essa condição na classe Programa
if (cp.topo < cp.lista.length){
cp.cadastro (pessoa)
}else {
System.out.println ("Lista cheia");
}
mas aqui da um erro de compilação. eu não teria que colocar lista[topo] = pessoa?
Desculpa é que estou pelo celular não percebi o erro. Faltou atribiur a pessoa a lista.
lista [topo] = pessoa;
Se tiver mas erros de digitacao, foi mau é que pelo celular é dificil kkkk
mas dentro do metodo eu ainda preciso que o usuário digite o nome e a idade da pessoa. eu adicionei isso e o problema ainda persiste.
acho que devo está fazendo algo de errado
Voce vai digitar na classe programa
System.out.println ("Digite nome");
String nome = in.nextLine ();
System.out.println ("idade");
int idade = in.nextInt ();
cp.cadastrar(new Pessoa (nome,idade));
Não lembro se usei construtor na classe. Você sabe usar construtor
sei sim
Ai é so colocar esse codigo em um for e repetir quantas vezes vc colocou na variavel que tem a quantidade de pessoas para cadastrar
como assim? mas na aplicação eu não tenho a variável quant
Você não tem uma varial onde você armazenou a quatidade de pessoas que vai cadastrar
eu fiz aqui mas tá dando outro erro, amanhã vejo o que faço.
muito obrigado pela boa vontade e ajuda e tenha uma boa noite.
amanhã continuarei nessa saga
Que isso fico feliz em ajudar. Caso queira posso postar as três classes prontas ou se quiser continuar tentando fico a disposição para ajudar
tentarei sim, quando puder coloco aqui
import java.util.Scanner;
public class Pessoa {
public String nome;
public int idade;
public Pessoa(String n, int i){
nome = n;
idade = i;
}
public String getNome(){
return nome;
}
public int idade(){
return idade;
}
public String toString(){
return "Nome: " + nome + " -> " + "Idade: " + idade;
}
}
public class Cadastro {
Pessoa lista[];
int topo = -1;
public Cadastro(int numeroDePessoas){
this.lista = new Pessoa[numeroDePessoas];
}
void cadastrar(Pessoa pessoa) {
topo++;
lista[topo] = pessoa;
}
void imprimir() {
for(int i = 0; i<lista.length; i++) {
if(lista != null) {
//System.out.println(lista[i].nome + "->" + lista[i].idade);
System.out.println(lista[i].toString());
}
}
}
}
import java.util.Scanner;
public class Programa {
public static void main(String args[]){
Scanner in = new Scanner(System.in);
System.out.println("digite o número de pessoas para o cadastro: ");
int numeroDePessoas = Integer.parseInt(in.nextLine());
Cadastro cadastro = new Cadastro(numeroDePessoas);
for(int i = 0; i < numeroDePessoas; i++){
System.out.println("digite o nome da pessoa: ");
String nome = in.nextLine();
System.out.println("digite a idade: ");
int idade = Integer.parseInt(in.nextLine());
cadastro.cadastrar(new Pessoa(nome, idade));
System.out.println("");
}
cadastro.imprimir();
}
}
Qualquer duvida estou a disposição
poxa obrigado!!! resolveu meu problema.
mas eu gostaria de saber, o que eu estava fazendo de errado? porque minha lista ficava repetindo os nomes e a idade da última pessoa digitada? poderia me explicar isso?
Você pede a quantidade de pessoas para cadastrar. Digamos que fosse 2 pessoas, você coloca esse valor no tamanho da lista
Pessoa lista[] = new Pessoa [2];
Então quando você dava o comando for:
for (int i = 0; i < lista.length; i++){
if (lista [i] == null){
lista [i] = pessoa;
}
}
O loop é realizado duas vezes para a mesma pessoa, cadastrando a primeira pessoa nas duas posições da lista. E quando for adicionar a segunda pessoa a lista esta toda preenchida e por isso aparece duas vezes a mesma pessoa.
Para resolver dentro do if você poderia fazer o seguinte.
if (lista [i] == null){
lista [i] = pessoa;
break;
}
Assim ele cadastra a pessoa e termina o loop, deixando a segunda posição como null, ou seja, livre para cadastrar a segunda pessoa.
puxa, era isso mesmo. muito obrigado pela ajuda, entendi perfeitamente.