Array search returning Default object

Asked

Viewed 63 times

0

Good evening, my registration system there is an option (4 in the Menu) to search the data of the Object with the minor age between a range that I declare in the option (minimum age and maximum age), but when bringing the result it brings data of a default object (with all fields blank) I did the reverse to return the object with greater age and it brings 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 object constructor 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 entries (all 1, all 2, all 4 and all 5 in the values), still in option 4 and searching for the oldest between 2 and 4 (that would be the with all 2 in the data) but he returns me an object with all the data 0, claiming the Sign of > for < in the method (if from line 152 in Menu.java) it brings the object with age normal (in the case of this example with all 4).

Thanks for your attention.

1 answer

0

After many tests, I managed to solve, it was like this:

case 4:
                int idadeMenor2;
                int idadeMaior2;
                int antigoD = 0;

                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>();
                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 = Integer.parseInt(pesquisa4.get(i).getId());
                        }
                    }
                    pesquisa4.get(antigoD).imprimir();
                }

                break;

Browser other questions tagged

You are not signed in. Login or sign up in order to post.