Array grva os mesmo Dados sempre

4 respostas
A

Boa noite pessoal, sou novo no GUJ e em java, estou tentando fazer um trabalhinho em java para aprender, mas estou com dificuldades em gravar um array de 10 posições, o memo grava sempre o mesmo valor, ou seja tenho 10 cadastros pra adicionar no array, mas ao final de gravar os 10 ele grava o ultimo sempre objeto no array e “copia” para as posições anteriores…

Acho q eh algo bem básico mas estou tentando achar o erro e nao consigo!

segue o código abaixo

Obrigado pessoal

public class Teste {

    public static void main(String[] args) {
        String[] marca = {"Gol", "Passat", "Uno", "Honda Civic", "Cross Fox",
            "Parati", "Ferrari", "Fusca", "Mercedes", "Honda Fit"};
        int[] ano = {1985, 2000, 2001, 2002, 2005, 1998, 2006, 2005, 1986, 2003};
        String[] serie = {"CAD2343", "DSA43667", "GYT5464", "FTH4323", "FRD3233",
            "LKI7698", "DFG3456", "FGT3457", "HJU2321", "AKG3456"};
        String[] cor = {"Amarelo", "Branco", "Verde", "Cor-de-Rosa", "Laranja",
            "Preto", "Bege", "Vermelho", "Lilas", "Preto"};
        double[] preco = {13.000, 14.000, 9.000, 50.000, 37.000, 17.000, 300.000, 6.000, 70.000, 53.000};
        String[] dataCadastro = {"12/03/2009", "05/05/2007", "02/03/2007", "01/06/2009", "16/03/2006",
            "01/03/2010", "01/02/2010", "15/03/2009", "18/08/2009", "13/04/2009"};


        Automovel a = new Automovel();
        for (int i = 0; i < a.getAutomovel().length; i++) {
            a.setMarca(marca[i]);
            a.setAno(ano[i]);
            a.setSerieMotor(serie[i]);
            a.setCor(cor[i]);
            a.setPreco(preco[i]);
            a.setDataCadastro(dataCadastro[i]);
            Automovel.setAutomovel(a);
        }

        a.listaAno(1985);
    }
}

Classe Automovel

public class Automovel {

    private String marca;
    private int ano;
    private String serieMotor;
    private String cor;
    private double preco;
    private String dataCadastro;
    static Automovel[] automovel;
    static int incrementaAutomovel = 0;

    public Automovel() {
        this.marca = null;
        this.ano = 0;
        this.serieMotor = null;
        this.cor = null;
        this.preco = 0.0;
        this.dataCadastro = null;
        automovel = new Automovel[10];

    }
    public void prucuraMarca(String marca) {
        for (int i = 0; i < incrementaAutomovel; i++) {
            if (automovel[i].getMarca().equals(marca)) {
                System.out.println("Carros da " + marca +
                        ": " + getAutomovel()[i].marca +
                        "\n" + getAutomovel()[i].ano +
                        "\n" + getAutomovel()[i].serieMotor +
                        "\n" + getAutomovel()[i].dataCadastro +
                        "\n" + getAutomovel()[i].getCor() + "\n \n");
            } else {
                System.out.println("Nada foi encontrado!");
            }

        }
    }

    public void listaAno(int ano) {
        for (int i = 0; i < incrementaAutomovel; i++) {
            if (getAutomovel()[i].getAno() == ano);
            System.out.println("Carros do ano " + getAutomovel()[i].ano +
                    ": " + getAutomovel()[i].marca);

        }
    }

    public void listaAutomovel(String serie) {
    }

   static void setAutomovel(Automovel a) {
        automovel[incrementaAutomovel] = a;
        incrementaAutomovel++;
    }

Set e get....
}

Obrigado!

4 Respostas

pedroroxd
Cara.. O ideal seria fazer um arraylist e depois percorre-lo Fiz seu exemplo aki rapidinho:
public class Teste {

	public static void main(String[] args) {
		String[] marca = { "Gol", "Passat", "Uno", "Honda Civic", "Cross Fox",
				"Parati", "Ferrari", "Fusca", "Mercedes", "Honda Fit" };
		int[] ano = { 1985, 2000, 2001, 2002, 2005, 1998, 2006, 2005, 1986,
				2003 };
		String[] serie = { "CAD2343", "DSA43667", "GYT5464", "FTH4323",
				"FRD3233", "LKI7698", "DFG3456", "FGT3457", "HJU2321",
				"AKG3456" };
		String[] cor = { "Amarelo", "Branco", "Verde", "Cor-de-Rosa",
				"Laranja", "Preto", "Bege", "Vermelho", "Lilas", "Preto" };
		double[] preco = { 13.000, 14.000, 9.000, 50.000, 37.000, 17.000,
				300.000, 6.000, 70.000, 53.000 };
		String[] dataCadastro = { "12/03/2009", "05/05/2007", "02/03/2007",
				"01/06/2009", "16/03/2006", "01/03/2010", "01/02/2010",
				"15/03/2009", "18/08/2009", "13/04/2009" };


		
		for (int i = 0; i < cor.length; i++) {
			Automovel a = new Automovel();
			a.setMarca(marca[i]);
			a.setAno(ano[i]);
			a.setSerieMotor(serie[i]);
			a.setCor(cor[i]);
			a.setPreco(preco[i]);
			a.setDataCadastro(dataCadastro[i]);
			Automovel.setAutomovel(a);
		}

		Automovel.listaAno(2005);
		Automovel.prucuraMarca("Gol");
		
	}
}
E depois a classe Automovel:
import java.util.ArrayList;

public class Automovel {

	private String marca;
	private int ano;
	private String serieMotor;
	private String cor;
	private double preco;
	private String dataCadastro;
	static ArrayList<Automovel> lista = new ArrayList<Automovel>();

	public Automovel() {
		this.marca = null;
		this.ano = 0;
		this.serieMotor = null;
		this.cor = null;
		this.preco = 0.0;
		this.dataCadastro = null;

	}

	public static void prucuraMarca(String marca) {
		for (int i = 0; i < lista.size(); i++) {
			if (lista.get(i).getMarca().equals(marca)) {
				System.out.println(marca + ": " + "Ano "
						+ lista.get(i).ano + " - Motor "
						+ lista.get(i).serieMotor + " - Data Cadastro "
						+ lista.get(i).dataCadastro + " - Cor "
						+ lista.get(i).getCor());
			}
		}
	}

	public static void listaAno(int ano) {
		for (int i = 0; i < lista.size(); i++) {
			if (lista.get(i).getAno() == ano) {
				System.out.println("Carros do ano " + ano + ": "
						+ lista.get(i).getMarca());
			}
		}
	}

	public String getMarca() {
		return marca;
	}

	public void setMarca(String marca) {
		this.marca = marca;
	}

	public int getAno() {
		return ano;
	}

	public void setAno(int ano) {
		this.ano = ano;
	}

	public String getSerieMotor() {
		return serieMotor;
	}

	public void setSerieMotor(String serieMotor) {
		this.serieMotor = serieMotor;
	}

	public String getCor() {
		return cor;
	}

	public void setCor(String cor) {
		this.cor = cor;
	}

	public double getPreco() {
		return preco;
	}

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

	public String getDataCadastro() {
		return dataCadastro;
	}

	public void setDataCadastro(String dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	public static void setAutomovel(Automovel a) {
		lista.add(a);
	}
}
Perceba que eu tirei akela porrada de increment que vc fez.. Não é necessário.. A cada hora você cria um novo automóvel, você acrescenta ele em uma lista de automóveis, simples não? Outra coisa... Eu não fiz nenhum get e set... O eclipse faz para mim! Isso mesmo. Não precisa ficar digitando.. Aperte Ctrl + 3 e digite ggas que é a abreviação de Generate getters and setters e selecione todos os getters e setters. Pronto, ele fez automaticamente !
A

Dae velhinho, com o seu exemplo eu entendi pq o meu nao funcionava …
estava instanciando uma vez soh…e granvando os dados na mesma instancia…

eu tinha q fazer com vetor mesmo por questao de trabalho de faculdade, q pediram…fiz tbm com arraylist e não nao tinha funcionado pois como havia falado instanciei uma vez…

e não enchergava isto hehe

mto obrigado pela atenção caro colega…

Abrass…

topico finalizado!

pedroroxd

Legal…
Espero que não suma do forum e venha só quando tiver dúvidas…
Outra coisa, já que o problema foi solucionado, vá ao primeiro post , clique em editar, e acrescente [RESOLVIDO] no final do tópico

A

Certamente que não, estou tentando aprender e o que puder passar para outras pessoas estarei a disposição

Obrigado pela ajuda!!

Criado 3 de maio de 2010
Ultima resposta 4 de mai. de 2010
Respostas 4
Participantes 2