Good evening, my registration system there is an option (4 in the Menu) to search for the data of the Object with the lowest age between a range that I declare in the option (minimum age and maximum age), however when bringing the result it back data from a default object (with all fields blank) I did the inverse to return the object with older age and it back correct. Main part:
import java.util.ArrayList;
import java.util.Scanner;
public class Menu {
public static int menu() {
int opcao;
System.out.println("\nProjeto Interdisciplinar \n"
+ "Tema:Desenhos Animados \n \n"
+ "Selecione a opção desejada:\n"
+ "[1] --> Cadastrar Desenhos. \n"
+ "[2] --> Alterar dados de um desenho cadastrado. \n"
+ "[3] --> Exibir desenhos de determinada faixa etária. \n"
+ "[4] --> Exibir desenho mais antigo de uma faixa etária \n"
+ "[5] --> Exibir valor em DVD no estoque de um determinado desenho. \n"
+ "[6] --> Exibir tempo médio de duração de todos os desenhos cadastrados. \n"
+ "[7] --> Listar todos desenhos cadastrados \n"
+ "[8] --> Créditos \n"
+ "[9] --> Sair \n"
+ "__________________________________________________\n \n");
Scanner ler = new Scanner(System.in);
ler.useDelimiter("\n");
opcao = ler.nextInt();
return opcao;
}
public static void main(String[] args) {
CadastroDesenho cadastro = new CadastroDesenho();
Scanner ler = new Scanner(System.in);
ler.useDelimiter("\n");
int opcao;
do {
opcao = menu();
switch (opcao) {
case 1:
Desenho desenho = new Desenho();
System.out.println("Novo Cadastro: \n"
+ "Informe o codigo ID do desenho a ser cadastrado:");
String NN = (ler.next());
Desenho pesquisa1 = cadastro.buscaID(NN);
if (pesquisa1 == null) {
desenho.setId(NN);
System.out.println("\n"
+ "Informe o nome do desenho:");
desenho.setNome(ler.next());
System.out.println("\n"
+ "Informe idade a classificação (idade minima recomendada):");
desenho.setIdade(ler.nextInt());
System.out.println("\n"
+ "Informe o ano de lançamento do desenho:");
desenho.setAno(ler.nextInt());
System.out.println("\n"
+ "Informe quantos minutos o desenho tem de duração:");
desenho.setDuracao(ler.nextInt());
System.out.println("\n"
+ "Informe quantas unidade do desenho há em estoque:");
desenho.setEstoque(ler.nextInt());
System.out.println("\n"
+ "Informe o valor unitário do desenho:");
desenho.setPreco(ler.nextFloat());
cadastro.addDesenho(desenho);
} else {
System.out.println("ID já registrado em nosso sistema, novamente utilizando outro ID.");
break;
}
break;
case 2:
String buscaID;
System.out.println("Informe do ID do desenho que deseja alterar:");
buscaID = ler.next();
Desenho pesquisa = cadastro.buscaID(buscaID);
if (pesquisa == null) {
System.out.println("Nenhum desenho encontrada com está ID!"
+ "\n__________________________________________________\n \n");
} else {
System.out.println("Informe o novo nome:");
pesquisa.setNome(ler.next());
System.out.println("Informe o novo ID:");
pesquisa.setId(ler.next());
System.out.println("Informe idade minima recomendada (classificação):");
pesquisa.setIdade(ler.nextInt());
System.out.println("Informe o ano de lançamento do desenho:");
pesquisa.setAno(ler.nextInt());
System.out.println("Informe quantos minutos tem de duração o desenho:");
pesquisa.setDuracao(ler.nextInt());
System.out.println("Informe a quantidade de DVD(s) que há em estoque deste desenho:");
pesquisa.setEstoque(ler.nextInt());
System.out.println("Informe o valor unitário do desenho:");
pesquisa.setPreco(ler.nextFloat());
}
break;
case 3:
int idadeMenor;
int idadeMaior;
System.out.println("Informe a faixa etária que deseja pesquisar de idade inicial:");
idadeMenor = ler.nextInt();
System.out.println("Idade Final:");
idadeMaior = ler.nextInt();
ArrayList<Desenho> pesquisa3 = new ArrayList<Desenho>();
pesquisa3 = cadastro.pesquisaFaixaEtaria(idadeMenor, idadeMaior);
if (pesquisa3.isEmpty()) {
System.out.println("Nenhum registro encontrado nesta etária"
+ "\n__________________________________________________\n \n");
} else {
for (int i = 0; i < pesquisa3.size(); i++) {
pesquisa3.get(i).imprimir();
}
}
break;
case 4:
int idadeMenor2;
int idadeMaior2;
Desenho antigoD = new Desenho();
System.out.println("Informe a faixa etária que deseja pesquisar de idade inicial:");
idadeMenor2 = ler.nextInt();
System.out.println("Idade Final:");
idadeMaior2 = ler.nextInt();
//ArrayList<Desenho> pesquisa4 = new ArrayList<Desenho>();
ArrayList<Desenho> pesquisa4 = cadastro.pesquisaFaixaEtaria(idadeMenor2, idadeMaior2);
if (pesquisa4.isEmpty()) {
System.out.println("Nenhum registro encontrado nesta etária"
+ "\n__________________________________________________\n \n");
} else {
for (int i = 0; i < pesquisa4.size(); i++) {
int antigo = pesquisa4.get(i).getAno();
int menor = 999999999;
if (antigo > menor) {
antigoD = pesquisa4.get(i);
}
}
antigoD.imprimir();
}
//pesquisa4.clear();
break;
case 5:
String buscaID5;
System.out.println("Informe do ID do desenho que deseja consultar o valor em estoque:"
+ "\n__________________________________________________\n \n");
buscaID5 = ler.next();
Desenho pesquisa5 = cadastro.buscaID(buscaID5);
if (pesquisa5 == null) {
System.out.println("Nenhum desenho encontrada com está ID!"
+ "\n__________________________________________________\n \n");
} else {
int estoque = pesquisa5.getEstoque();
float preco = pesquisa5.getPreco();
float total = estoque * preco;
System.out.println("A quantidade total em estoque do desenho " + pesquisa5.getNome() + ","
+ "R$ " + total);
}
break;
case 6:
ArrayList<Desenho> pesquisa6 = cadastro.getDesenhos();
if (pesquisa6.isEmpty()) {
System.out.println("Nenhum registro encontrado, você não cadastrou nenhum desenho ainda."
+ "\n__________________________________________________\n \n");
} else {
float media6;
int minuto;
float soma = 0;
int qtd;
for (int i = 0; i < pesquisa6.size(); i++) {
minuto = pesquisa6.get(i).getDuracao();
soma = minuto + soma;
}
qtd = pesquisa6.size();
media6 = soma / qtd;
System.out.println("A duração total de todos os " + (qtd) + " desenhos cadastrados é de:\n"
+ soma + " minutos, uma média de "
+ media6 + " minutos por desenho.");
}
break;
case 7:
ArrayList<Desenho> pesquisa7 = cadastro.getDesenhos();
if (pesquisa7.isEmpty()) {
System.out.println("Nenhum registro encontrado, você não cadastrou nenhum desenho ainda."
+ "\n__________________________________________________\n \n");
} else {
for (int i = 0; i < pesquisa7.size(); i++) {
pesquisa7.get(i).imprimir();
}
}
break;
case 8:
System.out.println(
"__________________________________________________\n"
+ "Projeto Interdisciplinar \n"
+ "Tema:Desenhos Animados \n \n"
+ "Lindomar Jose da Silva RGM: 1912126-1\n"
+ "Luiz Felipe Baptista de Castro RGM: 1877558-6 \n"
+ "Rodrigo Marcondes César RGM: 1873016-7 \n"
+ "__________________________________________________");
break;
case 9:
break;
default:
System.out.println("Opção inválida");
}
} while (opcao != 9);
}
}
Additional: (Object Class) where I have the constructor of the object in default.
public class Desenho {
public void setPreco(float preco) {
this.preco = preco;
}
private String id;
private String nome;
private int idade; //classificação
private int ano;
private int duracao;
private int estoque;
private float preco;
public Desenho (String id, String nome, int idade, int ano, int duracao, int estoque, float preco){
this.id = id;
this.nome = nome;
this.idade = idade;
this.ano = ano;
this.duracao = duracao;
this.estoque = estoque;
this.preco = preco;
}
public Desenho(){
this("","",0,0,0,0,0);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
public int getAno() {
return ano;
}
public void setAno(int ano) {
this.ano = ano;
}
public int getDuracao() {
return duracao;
}
public void setDuracao(int duracao) {
this.duracao = duracao;
}
public int getEstoque() {
return estoque;
}
public void setEstoque(int estoque) {
this.estoque = estoque;
}
public float getPreco() {
return preco;
}
public void imprimir(){
System.out.println("__________________________________________________ \n"
+ "Desenho ID: "+this.id+" \n"
+ "Nome: "+this.nome+"\n"
+ "Classificação: "+this.idade+"\n"
+ "Ano de lançamento:"+this.ano+"\n"
+ "Duração: "+this.duracao+" minutos.\n"
+ "Unidades em estoque: "+this.estoque+"\n"
+ "Valor de cada unidade: R$"+this.preco+"\n"
+ "__________________________________________________ \n");
}
}
Additional 2: Methods
import java.util.ArrayList;
import java.util.Scanner;
public class CadastroDesenho {
private ArrayList<Desenho> listaDesenhos;
public CadastroDesenho(){
listaDesenhos = new ArrayList <Desenho>();
}
public ArrayList<Desenho> getDesenhos(){
return listaDesenhos;
}
public void setDesenhos(ArrayList<Desenho> listaDesenhos) {
this.listaDesenhos = listaDesenhos;
}
public void addDesenho(Desenho desenho){
listaDesenhos.add(desenho);
}
public Desenho buscaID(String id){
for (int i=0; i<listaDesenhos.size();i++ ){
if(listaDesenhos.get(i).getId().equalsIgnoreCase(id)){
return listaDesenhos.get(i);
}
}
return null;
}
public ArrayList<Desenho> pesquisaFaixaEtaria(int idadeInicial, int idadeFinal){
ArrayList<Desenho> lista = new ArrayList<Desenho>();
for (int i=0; i<listaDesenhos.size();i++){
if (listaDesenhos.get(i).getIdade()>= idadeInicial && listaDesenhos.get(i).getIdade()<= idadeFinal) {
lista.add(listaDesenhos.get(i));
}
}
return lista;
}
public void limparCadastro(){
listaDesenhos.clear();
}
}
In my test I am creating 4 registers (all1, all2, all4 and all5 in values), inda in option 4 and looking for the oldest between 2 and 4 (which would be the all 2 in the data) but it returns me an object with all data 0, flipping the > to < in the method (if of line 152 in Menu.java) it brings the object with a larger age normally (in the case of this example the with all 4).
Thank you for your attention.