3
respostas

Vetor de objetos

Eu estava querendo criar uma classe Estacionamento que tem varios carros. Deste jeito está funcionando, mas está certo? porque para mim, está criando vários estacionamentos.

Classe Estacionamento:

package estacionamento02;

public class Estacionamento02 {

    private int vagas;
    private Carro02[] carros;
    private float entrada;
    private float saida;    
    private float preco;



    public float getSaida() {
        return saida;
    }



    public void setSaida(float saida) {
        this.saida = saida;
    }



    public float getPreco() {
        if(saida-entrada<=4) {
            preco = (float) ((saida-entrada)*4.8);
            return preco;
        }

        else {
        preco = (float) 23.00;
        return preco;
    }}



    public void setVagas(int vagas) {
        this.vagas = vagas;
    }



    public String Criarcarro(String marca,String modelo,String placa,float entrada,float saida) {
        Carro02 carros = new Carro02();
        carros.setMarca(marca);
        carros.setModelo(modelo);
        carros.setPlaca(placa);
        setEntrada(entrada);
        setSaida(saida);
        getPreco();
     return carros.getMarca() +" " + carros.getModelo();
}


    public float getEntrada() {
        return entrada;

    }


    public void setEntrada(float entrada) {
        this.entrada = entrada;
    }




    }

Classe carro:

package estacionamento02;

public class Carro02 {
    private String marca;
    private String modelo;
    private String placa;


    public String getMarca() {
        return marca;
    }
    public void setMarca(String marca) {
        this.marca = marca;
    }
    public String getModelo() {
        return modelo;
    }
    public void setModelo(String modelo) {
        this.modelo = modelo;
    }
    public String getPlaca() {
        return placa;
    }
    public void setPlaca(String placa) {
        this.placa = placa;
    }



}

Classe main:

package iU;

import javax.swing.JOptionPane;

import estacionamento02.Estacionamento02;

public class Main05 {


    public static void main(String[] args) {

        int vagas = Integer.parseInt(JOptionPane.showInputDialog("Qual  a quantidade de vagas"));
        Estacionamento02 a[] = new Estacionamento02[vagas];
        String c="";
        for(int i=0;i<vagas;i++) {
            a[i]= new Estacionamento02();
            String marca = JOptionPane.showInputDialog("Qual a marca do carro: "+i);
            String modelo = JOptionPane.showInputDialog("Qual o modelo do carro: "+i);
            String placa = JOptionPane.showInputDialog("Qual a placa do carro: "+i);
            float entrada = Float.parseFloat(JOptionPane.showInputDialog("Qual  a hora de entrada do carro "+i));
            float saida = Float.parseFloat(JOptionPane.showInputDialog("Qual  a hora de saida do carro "+i));
            c = a[i].Criarcarro(marca, modelo, placa, entrada,saida);


        }

        for(int i=0;i<vagas;i++) {
            JOptionPane.showMessageDialog(null," O "+(i+1)+ " Carro é: " +c +"\n"+" A entrada foi as: "+a[i].getEntrada() +" horas "+ "\n" + " A hora de saida foi: "+a[i].getSaida()+ "horas"+"\n" +" O preço foi: R$:"+ a[i].getPreco() +"\n");
        }
    }

}
3 respostas

Na classe main, onde está

 a[i]= new Estacionamento02();

estou criando varios estacionamentos em cada posição?

Na linha:

a[i]= new Estacionamento02();

Você está instanciando um estacionamento para cada indice do seu array e pelo que entendi seu objetivo é um estacionamento onde possa armazenar diversos carros.

Na linha :

Estacionamento02 a[] = new Estacionamento02[vagas];

Você está criando um array de estacionamentos e dando o tamanho desse array o número de vagas ou seja se você colocar

Estacionamento02 a[] = new Estacionamento02[10];

você está dizendo que o array a do tipo Estacionamento 2 tem 10 indices o main correto seria

        public static void main(String[] args) {

        int vagas = Integer.parseInt(JOptionPane.showInputDialog("Qual  a quantidade de vagas"));
        Estacionamento02 a = new Estacionamento02();
        a.setVagas(10);
        String c = "";

        for (int i = 0; i < vagas; i++) {

            String marca = JOptionPane.showInputDialog("Qual a marca do carro: " + i);
            String modelo = JOptionPane.showInputDialog("Qual o modelo do carro: " + i);
            String placa = JOptionPane.showInputDialog("Qual a placa do carro: " + i);
            float entrada = Float.parseFloat(JOptionPane.showInputDialog("Qual  a hora de entrada do carro " + i));
            float saida = Float.parseFloat(JOptionPane.showInputDialog("Qual  a hora de saida do carro " + i));
            c = a.Criarcarro(marca, modelo, placa, entrada, saida);

        }

Só que para funcionar teria que mudar algumas coisinhas nas classes estacionamento e carro.

Da um revisada pois dando uma olhada rápida o método Criarcarro() seta um valor de entrada toda vez que é chamado e tendo em vista que é um estacionamento e vários carros, da forma que está só cria um registro de entrada, ou seja, caso exista 10 carros ainda sim existe só um registro de entrada no estacionamento.

Como eu faço pra criar só um estacionamento com varios carros? Porque preciso instanciar a classe Estacionamento02 né?

Poderia fazer assim:

...
Estacionamento02 estacionamento = new Estacionamento02();
for(i=0;i<vagas;i++){
a[i]estacionamento.criarcarro(paramentros);}