Uso da classe Date e DateFormat

4 respostas
Christine1225

Olá pessoal, estou com um probleminha aqui e gostaria muito se alguém se predisposse a me ajudar...

Bom, estou fazendo um programinha bem simples em java, como se fosse um sisteminha de locação de automóveis, sem interface nem nd.
O problema é que tá havendo um erro de parseException na classe main e eu não estou conseguindo de maneira alguma resolver...

Tá aí o código fonte, por favor deêm uma olhada...

Classe TestaLocação (main)

public class TestaLocacao {

	public static void main(String[] args) {		
		
		
		
      try {
    	
    	DateFormat fm = new SimpleDateFormat("dd/MM/yyyy");
		Date dataInicial1 = (Date)fm.parse("10/09/2010");
	
      fm = new SimpleDateFormat("dd/MM/yyyy");
      Date dataFinal1 = (Date)fm.parse("20/09/2010");
      
      fm = new SimpleDateFormat("dd/MM/yyyy");
      Date dataInicial2 = (Date)fm.parse("12/09/2010");
      
      fm = new SimpleDateFormat("dd/MM/yyyy");
      Date dataFinal2 = (Date)fm.parse("14/09/2010");
	
		
		float kmInicial1 = (float) 1230.0;
		float kmFinal1 = (float) 1400.5;
		float kmInicial2 = (float) 350.7;
		float kmFinal2 = (float) 530.3;
		
		float precoDia1 = (float)30.0;
		float precoKm1 = (float)5.50;
		float precoDia2 = (float)50.0;
		float precoKm2 = (float)4.7;
				
		Carro carro1 = new Carro("TYG-4456");
		Carro carro2 = new Carro("GFT-7685");
		Motorista motorista1 = new Motorista("Fulano de Tal", 3476);
		Motorista motorista2 = new Motorista("Ciclano", 5099);
		Locacao locacao1 = new Locacao(kmInicial1, kmFinal1, precoDia1, precoKm1, dataInicial1, dataFinal1);
		Locacao locacao2  = new Locacao(kmInicial2, kmFinal2, precoDia2, precoKm2, dataInicial2, dataFinal2);
		
		
		
			System.out.println("\t\t***Sistema de Locacao de Automoveis***");
			System.out.println("\n\nLocacao de carro");
			System.out.println("\n\n\nLocacao1\n#Carro: " + carro1.getPlaca());
			System.out.println("\n#Motorista: Nome - " + motorista1.getNome());
			System.out.println("\n\tCodigo: " + motorista1.getCodigo());
			System.out.println("\n#Kilometragem Inicial: " + locacao1.getKmInicial());
			System.out.println("\n#Preco km por dia: " + Locacao.getPrecoDia());
			System.out.println("\n#Preco por km: " + Locacao.getPrecoKm());
			System.out.println("\n#Data de Locacao: "+ locacao1.getDataInicial());
			System.out.println("\n#Data de devolucao: " + locacao1.getDataFinal());
			System.out.println("\n#Kilometragem na devolucao: " + locacao1.getDataFinal());
			System.out.println("\n\nCustos da locacao: R$ " + locacao1.obtemCustos(dataInicial1, dataFinal1, precoDia1, precoKm1, kmInicial1, kmFinal1));
			
			System.out.println("\n\n\nLocacao2\n#Carro: " + carro2.getPlaca());
			System.out.println("\n#Motorista: Nome - " + motorista2.getNome());
			System.out.println("\n\tCodigo: " + motorista2.getCodigo());
			System.out.println("\n#Kilometragem do Carro: " + locacao2.getKmInicial());
			System.out.println("\n#Preco km por dia: " + Locacao.getPrecoDia());
			System.out.println("\n#Preco por km: " + Locacao.getPrecoKm());
			System.out.println("\n#Data de Locacao: "+ locacao2.getDataInicial());
			System.out.println("\n#Data de devolucao: " + locacao2.getDataFinal());
			System.out.println("\n#Kilometragem na devolucao: " + locacao2.getDataFinal());			
			System.out.println("\n\n#Custos da locacao: R$ " + locacao2.obtemCustos(dataInicial2, dataFinal2, precoDia2, precoKm2, kmInicial2, kmFinal2));
			
      } catch (ParseException e) {
  		e.printStackTrace();
  	}
		}

	}

classe Locacao

public class Locacao {
	
	public Date dataInicial;
	public Date dataFinal;
	private float kmInicial;
	private float kmFinal;
	private static float precoDia;
	private static float precoKm;
	
	
	public Locacao(float kmInicial, float kmFinal, float precoDia, float precoKm, Date dataInicial, Date dataFinal){
		this.kmInicial = kmInicial;
		this.kmFinal = kmFinal;
		Locacao.precoDia = precoDia;
		Locacao.precoKm = precoKm;
		this.dataInicial = dataInicial;
		this.dataFinal = dataFinal;
	}
	
	

	public static float getPrecoDia() {
		return precoDia;
	}

	public static void setPrecoDia(float precoDia) {
		Locacao.precoDia = precoDia;
	}

	public static float getPrecoKm() {
		return precoKm;
	}

	public static void setPrecoKm(float precoKm) {
		Locacao.precoKm = precoKm;
	}
	
	public float getKmInicial() {
		return kmInicial;
	}
	
	public void setKmInicial(float kmInicial) {
		this.kmInicial = kmInicial;
	}
	
	public float getKmFinal() {
		return kmFinal;
	}
	
	public void setKmFinal(float kmFinal) {
		this.kmFinal = kmFinal;
	}
	
	
	public Date getDataInicial() {
		return dataInicial;
	}



	public void setDataInicial(Date dataInicial) {
		this.dataInicial = dataInicial;
	}



	public Date getDataFinal() {
		return dataFinal;
	}



	public void setDataFinal(Date dataFinal) {
		this.dataFinal = dataFinal;
	}
	
	long data0 = dataInicial.getTime();
	long data1 = dataFinal.getTime();
	
	long dif = (data1 - data0);
	
	
	 int dias = (int)dif / (1000 * 60 * 60 * 24);
	
	
	public float obtemCustos(Date dataInicial, Date dataFinal, float precoDia, float precoKm, float kmInicial, float kmFinal) {
		
		return (((kmFinal-kmInicial)*precoKm) + (dias*precoDia));
	}

	
}

classe Motorista

public class Motorista {
	
	private String nome;
	private int codigo;
	private Motorista[] motoristas = new Motorista[20];
	private int i;
	
	public Motorista(String nome, int codigo){
		this.nome = nome;
		setCodigo(codigo);
	}
	
	private void setCodigo(int codigo){
		this.codigo = codigo;
	}
	
	public void setNome(String nome){
		this.nome = nome;
	}
	
	public int getCodigo(){
		return codigo;
	}
	
	public String getNome(){
		return nome;
	}
	
	public void adicionaMotorista(Motorista motorista){
		motoristas[i] = motorista;
		i++;
		
	}

}

Classe Carro

public class Carro {
	
	private String placa;
	private Carro[] carros = new Carro[100];
	private int i;
	
	public Carro(String placa){
		setPlaca(placa);
	}
	
	
	private void setPlaca(String placa){
		this.placa = placa;
	}
	
	public String getPlaca(){
		return placa;
	}
	
	public void adicionaCarro(Carro carro){
		carros[i] = carro;
		i++;
	}

}

Erro apresentado no console do Eclipse

Exception in thread "main" java.lang.NullPointerException
at locacaoDeAutomoveis.Locacao.(Locacao.java:81)
at locacaoDeAutomoveis.TestaLocacao.main(TestaLocacao.java:44)

4 Respostas

rmendes08

Cristine, antes de mais nada, formate a sua classe com as tags code para facilitar a leitura, obrigado.

robsonsm
o problema da exceção está aqui:
long data0 = dataInicial.getTime();
long data1 = dataFinal.getTime();

talvez seria melhor vc colocar todas aquelas variaveis dentro do metodo:

public float obtemCustos(Date dataInicial, Date dataFinal, float precoDia,
			float precoKm, float kmInicial, float kmFinal) {
		long data0 = dataInicial.getTime();
		long data1 = dataFinal.getTime();
		
		long dif = (data1 - data0);
		
		int dias = (int) dif / (1000 * 60 * 60 * 24);

		return (((kmFinal - kmInicial) * precoKm) + (dias * precoDia));
	}
robsonsm

este codigo poderia sem bem simplificado, e algumas coisas não são necessárias por exemplo:

DateFormat fm = new SimpleDateFormat("dd/MM/yyyy");
			Date dataInicial1 = (Date) fm.parse("10/09/2010");

			fm = new SimpleDateFormat("dd/MM/yyyy"); // NÃO É NECESSÁRIO
			Date dataFinal1 = (Date) fm.parse("20/09/2010");

			fm = new SimpleDateFormat("dd/MM/yyyy");// NÃO É NECESSÁRIO
			Date dataInicial2 = (Date) fm.parse("12/09/2010");

			fm = new SimpleDateFormat("dd/MM/yyyy");// NÃO É NECESSÁRIO
			Date dataFinal2 = (Date) fm.parse("14/09/2010");
Christine1225

Galera, muito obrigada pelas sugestões.
Já consegui resolver meu problema aqui…

E desculpe pela não formatação em código anteriormente, é que ainda estou me familiarizando com o fórum…

Criado 19 de setembro de 2010
Ultima resposta 19 de set. de 2010
Respostas 4
Participantes 3