Programa só imprime a ultima posição do registro

1 resposta
Henonrique_Vitori

O programa so esta imprimindo o ultimo imovel cadastrado

java.util.Scanner;

import javax.swing.JOptionPane;

public class DesafioA {
public static void main(String[] args) {
	class venda{
		String tipo,endereco,bairro,preco;
	}
	class aluguel{
		String tipo,endereco,bairro,preco;
	}
	class imovel{
		String tipo,endereco,bairro;
		String preco;
		int situacao;
		
	}
	Scanner in = new Scanner(System.in);
	int n=0,j=0;
	aluguel[]dadosa=new aluguel[2];
	venda[]dadosv=new venda[2];
	imovel[]dados=new imovel[2];
	for(int i=0;i<dados.length;i++){
		dados[i]=new imovel();
		dados[i].tipo=JOptionPane.showInputDialog("Qual o tipo do imovel?");
		dados[i].endereco=JOptionPane.showInputDialog("Qual o endreço do imovel?");
		dados[i].bairro=JOptionPane.showInputDialog("Qual o bairro do imovel?");
		dados[i].preco=JOptionPane.showInputDialog("Qual o preço do contrato?");
		dados[i].situacao=JOptionPane.showConfirmDialog(null,"o imovel esta a venda?");
		if(dados[i].situacao==JOptionPane.YES_OPTION){
			dadosv[n]=new venda();
			dadosv[n].tipo=dados[i].tipo;
			dadosv[n].endereco=dados[i].endereco;
			dadosv[n].bairro=dados[i].bairro;
			dadosv[n].preco=dados[i].preco;
			n=n++;
		}else{
			dadosa[j]=new aluguel();
			dadosa[j].tipo=dados[i].tipo;
			dadosa[j].endereco=dados[i].endereco;
			dadosa[j].bairro=dados[i].bairro;
			dadosa[j].preco=dados[i].preco;
			j=j++;
		}
	}System.out.println("INFORME A SUA PROCURA 1=Venda, 2=Aluguel");
	int x=in.nextInt();
	if(x ==1){
		for(n=0;n<dadosv.length-1;n++){
			System.out.println(dadosv[n].tipo  + "  |ENDEREÇO|: "+ dadosv[n].endereco  +  dadosv[n].bairro  +"  |Preço|: "+  dadosv[n].preco);
		}
		
	}else{
		for(j=0;j<dadosa.length-1;j++){
			System.out.println(dadosa[j].tipo  + dadosa[j].endereco  + dadosa[j].bairro  + dadosa[j].preco);
		}
	}
	

}

}

1 Resposta

4mega

Eu mudei os vetores fixos para Arrays dinâmicos, a implementação fica dessa forma:

package classes;

import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.JOptionPane;


public class Teste {

private static ArrayList<Imovel> imoveis;

public static void main(String[] args) {
    imoveis = new ArrayList<>();
    Object[] options = {"Sim", "Não"};
    while (true) {
        Imovel imovel = new Imovel();
        imovel.setTipo(JOptionPane.showInputDialog("Qual o tipo do imovel?"));
        imovel.setEndereco(JOptionPane.showInputDialog("Qual o endereço do imovel?"));
        imovel.setBairro(JOptionPane.showInputDialog("Qual o bairro do imovel?"));
        imovel.setPreco(JOptionPane.showInputDialog("Qual o preço do contrato?"));
        imovel.setTipoImovel(javax.swing.JOptionPane.showOptionDialog(null, "Venda ou Aluguel??", "Tipo Imóvel", -1, 2, null, new Object[]{"Venda", "Aluguel"}, 0));
        imoveis.add(imovel);
        if (javax.swing.JOptionPane.showOptionDialog(null, "Gostaria de adicionar mais um imóvel?", "Adicionar mais?", -1, 2, null, options, options[0]) != 0) {
            break;
        }
    }
    while (true) {
        int selecao = javax.swing.JOptionPane.showOptionDialog(null, "Quais imóveis gostaria de listar?", "Adicionar mais?", -1, 2, null, new Object[]{"Venda", "Aluguel", "Sair"}, 0);
        if (selecao != 2) {
            System.out.println((selecao == 0) ? "--Venda--" : "--Aluiguel--"); // é igual fazer "if"
            for (Imovel imovel : imoveis) {
                if (imovel.getTipoImovel() == selecao) {
                    System.out.println(imovel.getEndereco() + ", " + imovel.getBairro() + ", " + imovel.getPreco());
                }
            }
            System.out.println("-------");
        } else {
            break;
        }
    }
}

private static class Imovel {

    private String tipo;
    private String endereco;
    private String bairro;
    private String preco;
    private int tipoImovel; // 0 Venda , 1 Aluguel

    public Imovel() {

    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getPreco() {
        return preco;
    }

    public void setPreco(String preco) {
        this.preco = preco;
    }

    public int getTipoImovel() {
        return tipoImovel;
    }

    public void setTipoImovel(int tipoImovel) {
        this.tipoImovel = tipoImovel;
    }

}
}

Eu deixei uma classe separada chamada Imóvel, assim trabalha com um objeto. Coloquei uma variável do tipo int que define se é aluguel ou venda, isso porque os campos são os atributos são os mesmos, assim só trata o qual você quer listar no final. O looping permite adicionar quantos imóveis quiserem.

Qualquer duvida desse código, só entrar em contato, meu skype esta no meu perfil.

Criado 19 de junho de 2017
Ultima resposta 21 de jun. de 2017
Respostas 1
Participantes 2