Boa noite.Então tenho um problema,preciso criar uma agenda de contatos,estou usando ArrayList pela primeira vez e também sou novo em java…Segue classes:
public class Pessoa {
private String nome;
private int anonasc;
private float altura;
private int idade;
public Pessoa(String nome, int datnasc, float altura, int idade) {
this.nome = nome;
this.anonasc = datnasc;
this.altura = altura;
this.idade = idade;
}
public Pessoa() {
this.nome = "sem nome";
this.anonasc = 0;
this.altura = 0f;
this.idade = 0;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getDatnasc() {
return anonasc;
}
public void setDatnasc(int datnasc) {
this.anonasc = datnasc;
}
public double getAltura() {
return altura;
}
public void setAltura(float altura) {
this.altura = altura;
}
public int getIdade() {
idade = 2017 - anonasc;
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
Agora Agenda:
package exerdoislista1;
import java.util.List;
import java.util.ArrayList;
public class Agenda {
private String nomepessoa;
private int idadepessoa;
private float alturapessoa;
List<Pessoa> pessoas =new ArrayList<>();
Pessoa a;
public String getNomepessoa() {
return nomepessoa;
}
public void setNomepessoa(String nomepessoa) {
this.nomepessoa = nomepessoa;
}
public int getIdadepessoa() {
return idadepessoa;
}
public void setIdadepessoa(int idadepessoa) {
this.idadepessoa = idadepessoa;
}
public float getAlturapessoa() {
return alturapessoa;
}
public void setAlturapessoa(float alturapessoa) {
this.alturapessoa = alturapessoa;
}
/*public Agenda() {
pessoas = new ArrayList<Pessoa>();
}
*/
public void armazenaPessoa(String nome, int idade, int datnasc, float altura) {
//Pessoa test = new Pessoa(nome, datnasc, altura, idade);
for(int i=0;i<pessoas.size();i++){
pessoas.add(a);
}
}
public void removePessoa(Pessoa a) {
pessoas.remove(a);
}
public void imprimePessoa() {
System.out.println(a);
}
}
Classe Prinipal:
public static void main(String[] args) {
// TODO code application logic here
Scanner agScan = new Scanner(System.in);
Agenda agenExe = new Agenda();
String nome;
int idade;
int datanasc = 0;
float altura;
for(int x=0;x<2;x++){
System.out.println("Nome:");
nome = agScan.nextLine();
System.out.println("Idade:");
idade = agScan.nextInt();
System.out.println("Altura:");
altura = agScan.nextFloat();
agenExe.armazenaPessoa(nome, idade,datanasc, altura);
}
agenExe.imprimePessoa();
Amigo, você não deixou claro qual o seu problema.
De qualquer forma, algo que achei estranho nas suas classes foi agenda ter os atributos:
private String nomepessoa;
private int idadepessoa;
private float alturapessoa;
Esses atributos não são referentes a classe Pessoa?
Meu problema é terminar ele no proposite de add pessoas na agenda,imprimir toda agenda,imprimir pelo indice que sera pedido,remover pessoa pelo nome…Minha cabeça esta totalmente travada…Tentando imprimir ao menos uma pessoa resulta em null…
Segue o código que fiz. Fiz uns pequenos javadocs para tentar explicar o que é cada coisa.
Espero ter ajudado:
import java.time.LocalDate;
/**
* Representa uma pessoa que será adicionada na {@link Agenda}
*/
public class Pessoa {
private final String nome;
private final int anonasc;
private final float altura;
public Pessoa(final String nome, final int anonasc, final float altura) {
this.nome = nome;
this.anonasc = anonasc;
this.altura = altura;
}
public String getNome() {
return this.nome;
}
public int getAnonasc() {
return this.anonasc;
}
public float getAltura() {
return this.altura;
}
public int getIdade() {
return LocalDate.now().getYear() - this.anonasc;
}
@Override
public String toString() {
return this.nome + " " + this.getIdade() + " anos " + "Mede: " + this.altura;
}
}
import java.util.ArrayList;
import java.util.List;
/**
* Representa a agenda do nosso sistema que contém uma lista de pessoas.
*/
public class Agenda {
private final List<Pessoa> pessoas = new ArrayList<>();
public List<Pessoa> getPessoas() {
return this.pessoas;
}
public void adicionarPessoa(final Pessoa pessoa) {
this.pessoas.add(pessoa);
}
public Pessoa pessoa(final int indice) {
return this.pessoas.get(indice);
}
/**
* Procura pelo nome informado em nossa lista de pessoas, caso encontrado
* remove a pessoa da lista.
*/
public void remover(final String nome) {
Pessoa pessoaASerRemovida = null;
for (final Pessoa pessoa : this.pessoas) {
if (pessoa.getNome().equals(nome)) {
pessoaASerRemovida = pessoa;
break;
}
}
if (pessoaASerRemovida != null) {
this.pessoas.remove(pessoaASerRemovida);
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Aplicacao {
// nossa aplicação sempre terá uma agenda
private final Agenda agenda = new Agenda();
private final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
/**
* Método main que inicia a aplicação criando uma instância da mesma e
* apresenta o menu.
*
* OBS: Não foi feito tratamento para valores inválidos que podem ser
* informados.
*/
public static void main(final String[] args) throws IOException {
final Aplicacao aplicacao = new Aplicacao();
aplicacao.menu();
}
/**
* Solicita ao usuário os dados necessários para criar uma Pessoa e adicionar
* em nossa lista de pessoas da nossa agenda.
*
* @throws IOException
*/
public void criarPessoa() throws IOException {
System.out.print("Informe o nome: ");
final String nome = this.br.readLine();
System.out.print("Informe o ano de nascimento: ");
final int anonasc = Integer.parseInt(this.br.readLine());
System.out.print("Informe a altura: ");
final float altura = Float.parseFloat(this.br.readLine());
this.agenda.adicionarPessoa(new Pessoa(nome, anonasc, altura));
System.out.println("Pessoa adicionada");
}
/**
* Percorre a lista de pessoas em nossa agenda e utiliza o toString para
* imprimir os dados delas.
*/
public void listarPessoasCadastradas() {
for (final Pessoa pessoa : this.agenda.getPessoas()) {
System.out.println(pessoa.toString());
}
}
/**
* Solicita ao usuário um índice, procura na lista por esse índice e imprime
* o usuário correspondente.
*
* Caso o índice informado não exista em nossa agenda informamos ao usuário
*/
public void imprimirPessoaPeloIndice() throws IOException {
System.out.print("Informe o índice: ");
final int indice = Integer.parseInt(this.br.readLine());
try {
System.out.println(this.agenda.pessoa(indice).toString());
} catch (final IndexOutOfBoundsException e) {
System.out.println("Indice informado não existe na agenda.");
}
}
/**
* A partir de um nome informado pelo usuário passamos para o método
* {@link Agenda#remover(String)}
*/
public void removerPessoaPeloNome() throws IOException {
System.out.print("Informe o nome da pessoa a ser removida: ");
final String nome = this.br.readLine();
this.agenda.remover(nome);
}
/**
* Enquanto o usuário não informar 0 apresentaremos o menu de opções para
* ele.
*
* OBS: Não foi feito tratamento para informações não esperadas pelo
* sistema, caso isso ocorra uma exceção será lançada e o sistema terminará.
*/
public void menu() throws IOException {
int opcaoSelecionada = 0;
do {
System.out.println("--------------MENU----------------- ");
System.out.println("0. Terminar");
System.out.println("1. Adicionar pessoa");
System.out.println("2. Listar pessoas cadastradas");
System.out.println("3. Imprimir pessoa por índice");
System.out.println("4. Remover pessoa por nome");
System.out.print("Escolha uma opção: ");
opcaoSelecionada = Integer.parseInt(this.br.readLine());
System.out.println("\n");
switch (opcaoSelecionada) {
case 1:
this.criarPessoa();
break;
case 2:
this.listarPessoasCadastradas();
break;
case 3:
this.imprimirPessoaPeloIndice();
break;
case 4:
this.removerPessoaPeloNome();
break;
default:
break;
}
} while (opcaoSelecionada != 0);
System.out.println("Sistema finalizado!");
this.br.close();
}
}
Então,ficou top né,hahahaah.Tenho que estudar muito,muitos classes que importou ali que nunca usei também.Vou analisar bem o codigo e vou tentar adicionair mais coisas.Tiago obrigadão mesmo,semana que vem eu tenho prova de POO Java e to lascadão,esse exercício estava me enervando…Abraço amigo
1 curtida