Return/save problem in a JAVA list

Asked

Viewed 72 times

0

Good night,

I have a Master Class:

        import static javax.swing.JOptionPane.*;

        import java.util.ArrayList;
        import java.util.List;

        import static java.lang.Integer.parseInt;

        public class Principal {

            public static void main(String[] args) {
                // TODO Auto-generated method stub

                List<Imovel> lista1 = new ArrayList<>();
                List<Locacao> lista2 = new ArrayList<>();

                Imovel imovel = new Imovel(0, 0, 0, false);

                Imobiliaria imobiliaria = new Imobiliaria();

                int opcao = 0;

                do {
                    try {
                        opcao = parseInt(showInputDialog(Imobiliaria.menu()));
                        if(opcao < 1 || opcao >6) {
                            throw new OpcaoInvalidaException("Opcao Invalida");
                        } else {
                            switch(opcao) {
                            case 1: 
                                Imobiliaria.registrarImovel(imovel);
                                break;
                            case 2:
                                Imobiliaria.ListarDisponivel(lista1);
                                break;
                            }
                        }
                    }catch (NumberFormatException e) {
                        showMessageDialog(null, e);
                    }
                    catch(OpcaoInvalidaException e) {
                        showMessageDialog(null, e);
                    }

                } while(opcao != 6);
            }

        }

And I have a class called Immovable :

        public class Imovel {
            private int codigo;
            private int metragem;
            private double valorMetroQuadrado;
            private boolean disponivel;

            public Imovel(int codigo, int metragem, double valorMetroQuadrado, boolean disponivel) {
                super();
                this.codigo = codigo;
                this.metragem = metragem;
                this.valorMetroQuadrado = valorMetroQuadrado;
                this.disponivel = disponivel;
                disponivel = true;
            }

            @Override
            public String toString() {
                String aux = "";
                String dispo = "O quarto está disponivel";
                aux += "O codigo do imovel é " + codigo + "\n";
                aux += "A metragem do imovel é " + metragem + "\n";
                aux += "O valor do metro quadrado é " + valorMetroQuadrado + "\n";
                if(disponivel == false) {
                    dispo =  "O quarto não está disponivel";
                }
                aux += dispo;

                return aux;
            }

            public int getCodigo() {
                return codigo;
            }

            public void setCodigo(int codigo) {
                this.codigo = codigo;
            }

            public int getMetragem() {
                return metragem;
            }

            public void setMetragem(int metragem) {
                this.metragem = metragem;
            }

            public double getValorMetroQuadrado() {
                return valorMetroQuadrado;
            }

            public void setValorMetroQuadrado(double valorMetroQuadrado) {
                this.valorMetroQuadrado = valorMetroQuadrado;
            }

            public boolean isDisponivel() {
                return disponivel;
            }

            public void setDisponivel(boolean disponivel) {
                this.disponivel = disponivel;
            }

        }

A Commercial class:

        public class Comercial extends Imovel {
            private int numeroDeSalas;


            public Comercial(int codigo, int metragem, double valorMetroQuadrado, boolean disponivel, int numeroDeSalas) {
                super(codigo, metragem, valorMetroQuadrado, disponivel);
                this.numeroDeSalas = numeroDeSalas;
            }


            @Override
            public String toString() {
                String aux = "";
                aux += "O numero de sala é " + numeroDeSalas + "\n";

                return aux;
            }


            public int getNumeroDeSalas() {
                return numeroDeSalas;
            }


            public void setNumeroDeSalas(int numeroDeSalas) {
                this.numeroDeSalas = numeroDeSalas;
            }

            public double calcularAluguel() {
                return getMetragem()*getValorMetroQuadrado()+550*getNumeroDeSalas();
            }

        }

Another class called Residential:

        public class Residencial extends Imovel {
            private int numeroDeQuartos;

            public Residencial(int codigo, int metragem, double valorMetroQuadrado, boolean disponivel, int numeroDeQuartos) {
                super(codigo, metragem, valorMetroQuadrado, disponivel);
                this.numeroDeQuartos = numeroDeQuartos;
            }

            @Override
            public String toString() {
                String aux = "";
                aux += "O numero de quartos é " + numeroDeQuartos + "\n";

                return aux;
            }

            public int getNumeroDeQuartos() {
                return numeroDeQuartos;
            }

            public void setNumeroDeQuartos(int numeroDeQuartos) {
                this.numeroDeQuartos = numeroDeQuartos;
            }

            public double calcularAluguel() {
                return getMetragem()*getValorMetroQuadrado()+300*getNumeroDeQuartos();
            }

        }

and finally the most important Real Estate

        import java.io.ObjectInputStream.GetField;
        import java.util.ArrayList;
        import java.util.Iterator;
        import java.util.List;

        import static java.lang.Integer.parseInt;
        import static java.lang.Long.parseLong;
        import static javax.swing.JOptionPane.showInputDialog;
        import static javax.swing.JOptionPane.showMessageDialog;


        public class Imobiliaria {

            private static List<Imovel> lista1 = new ArrayList<Imovel>();

            private static List<Locacao> lista2 = new ArrayList<Locacao>();

            private static Residencial residencial = new Residencial(0, 0, 0, false, 0);


            static String menu() {
                String aux = "";
                aux += "1 - Registrar Imovel \n";
                aux += "2 - Listar Imoveis disponiveos \n";
                aux += "3 - Listar Imoveis ALUGADOS \n";
                aux += "4 - Realizar Locação \n";
                aux += "5 - Finalizar Locação \n";
                aux += "6 - Finalizar \n";

                return aux;
            }

            public static void registrarImovel(Imovel imovel) throws OpcaoInvalidaException {
                int codigo, metragem,opcao = 0,numeroDeQuartos,numeroDeSalas;
                boolean disponivel;
                double valorMetroQuadrado;


                opcao = parseInt(showInputDialog("Qual tipo de imovel?\n1. Residencial\n2. Comercial"));
                if(opcao < 1 ||opcao > 2) {
                    throw new OpcaoInvalidaException("Opcao Invalida");
                } else if(opcao == 1) {
                    codigo = parseInt(showInputDialog("Digite o código do imovel"));

                    metragem = parseInt(showInputDialog("Digite a metragem do imovel"));

                    valorMetroQuadrado = parseInt(showInputDialog("Digite o valor do metro quadrado"));

                    numeroDeQuartos = parseInt(showInputDialog("Digite o numero de quartos"));

                    disponivel = true;

                    lista1.add(new Residencial(codigo, metragem, valorMetroQuadrado, disponivel, numeroDeQuartos));
                }

                else {
                    codigo = parseInt(showInputDialog("Digite o código do imovel"));

                    metragem = parseInt(showInputDialog("Digite a metragem do imovel"));

                    valorMetroQuadrado = parseInt(showInputDialog("Digite o valor do metro quadrado"));

                    numeroDeSalas = parseInt(showInputDialog("Digite o numero de quartos"));

                    disponivel = true;

                    lista1.add(new Comercial(codigo, metragem, valorMetroQuadrado, disponivel, numeroDeSalas));
                }


            }

            public static void ListarDisponivel(List<Imovel> lista1) {
                String ListarResidencial = "";
                String ListarComercial;


                ListarResidencial += "IMOVEIS RESIDENCIAL -----------------";

                for(Imovel imovel : lista1) {
                    ListarResidencial += "teste";
                    ListarResidencial += imovel.getCodigo();
                    ListarResidencial += imovel.getMetragem();
                    ListarResidencial += imovel.getValorMetroQuadrado();
                    ListarResidencial += residencial.getNumeroDeQuartos();
                }

                showMessageDialog(null, ListarResidencial);
            }

        }

In the Real Estate class there is a menu where I create and ask if it is residential or commercial so I take the data and add in the list with list.

however after that I try to return this data, but the data is not returned, nor null appears anything just closes...

1 answer

0

Hello,

In your main method you are passing an empty list in the method call Imobiliaria.ListarDisponivel(lista1); and it is on top of that list that the class method Imobiliaria is working.

The list in which you are adding the values, is that of the class Imobiliaria, so you don’t need to pass anything in the method. Change your method ListarDisponivel for:

    public static void listarDisponivel() {
                String ListarResidencial = "";
                String ListarComercial;


                ListarResidencial += "IMOVEIS RESIDENCIAL -----------------";

                for(Imovel imovel : lista1) {
                    ListarResidencial += "teste";
                    ListarResidencial += imovel.getCodigo();
                    ListarResidencial += imovel.getMetragem();
                    ListarResidencial += imovel.getValorMetroQuadrado();
                    ListarResidencial += residencial.getNumeroDeQuartos();
                }

                showMessageDialog(null, ListarResidencial);
            }

And the method call in your main class will be:

Imobiliaria.ListarDisponivel();

This way it will iterate in the list of its class and not in the received list by parameter.

I’d like to comment on a few more things I noticed in your code, in case it’s of interest to you and you haven’t noticed:

1) You do not need to instantiate the lists and the class Imobiliaria in your class Principal, once his class Imobiliaria has methods static and you will work with the lists present in it. So you can remove these code snippets from your class Principal:

List<Imovel> lista1 = new ArrayList<>();
List<Locacao> lista2 = new ArrayList<>();

Imobiliaria imobiliaria = new Imobiliaria();

2) In the method call registrarImovel still in his class Imobiliaria, you’re passing a Imovel as parameter not being used. No need.

And finally a tip: It is good practice to declare methods and variables in Lowercamelcase (First lower case letter), so your method would be: listarDisponivel, for example.

I hope I’ve helped.

Browser other questions tagged

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