Passagem de argumentos

Ai galera estou com um probleminha aki que nao consigo resolver…
Estou implementando uma classe Automovel que herda os metodos e atributos de Transportes…
Mais na hora de cadastrar um novo automovel estou com um probleminha na passagem de argumentos…

o programa começa a executar dai tudo bem ate xegar na parte em que vou digitar a entrada da quilometragem…
da erro…

Exception in thread “main” java.lang.NullPointerException
at transxerez.Transportes.setQuilometragem(Transportes.java:48)
at transxerez.Main.main(Main.java:44)
Java Result: 1

ai vai o codigo: se alguem puder ajudar agradeço…

vo mandar logo as tres classes…

CLASSE MAIN

package transxerez;
import java.util.Scanner;

public class Main {


    public static void main(String[] args) {
        int aux;
        int aux1;
        
        
        Scanner scan = new Scanner(System.in);
        Automovel auto = new Automovel();
        
        
        
        System.out.printf("1 - Automovel\n");
        System.out.printf("2 - Aviao\n");
        System.out.printf(">>");
        aux = scan.nextInt();
        
        switch(aux){
        case 1:
            System.out.printf("\n1 - Cadastrar\n");
            System.out.printf("2 - Abastecer\n");
            System.out.printf("3 - Mover\n");
            System.out.printf("4 - Exibir\n");
            System.out.printf(">>");
            aux1 = scan.nextInt();
            
            switch(aux1){
            case 1:
                String x;
                System.out.printf("Marca: ");
                auto.setMarca(scan.next());
                System.out.printf("Modelo: ");
                auto.setModelo(scan.next());
                System.out.printf("Quilometragem: ");
                auto.setQuilometragem(scan.nextDouble());
                
                
                break;
            case 2:
                
                break;
            case 3:
                
                break;
            case 4:
                
                break;
                                
            }
            
            
            break;
        }
        
        
        
        
    }

}

CLASSE TRANSPORTES


package transxerez;

/**
 *
 * @author Heladio
 */
public class Transportes {
    
    
    // DECLARAÇÃO DE VARIAVEIS
    
    private String marca;
    private String modelo;
    private Double quilometragem;
    private Double capacidadeTanque;
    private Double litrosTanque;
    
    
    // CONSTRUTORES
    
    Transportes(){}
    
    Transportes(String marc, String model, double km, double capac, double litros){
        
        marca = marc;
        modelo = model;
        quilometragem = km;
        capacidadeTanque = capac;
        litrosTanque = litros;
    }
    
    // METODOS DE ACESSO
    
    public void setMarca(String marc){
        marca = marc;
    }
    
   public void setModelo(String model){
        modelo = model;
    }
        
    public void setQuilometragem(double km){
        quilometragem += km;
    }
            
    public void setCapacidadeTanque(double capac){
        capacidadeTanque = capac;
    }
                
    public void setLitrosTanque(double litros){
        litrosTanque = litros;
    }
    
    
    public String getMarca(){
        return marca;
    }
    
    public String getModelo(){
        return modelo;
    }
    
    public double getQuilometragem(){
        return quilometragem;
    }
    
    public double getCapacidade(){
        return capacidadeTanque;
    }
    
    public double getLitrosTanque(){
        return litrosTanque;
    }
    
    
    
    
      
    // METODOS PARA EXECUTAR AÇÕES
    
    public void mover(double km){
        this.setQuilometragem(km);
    }
    
    
    public void abastecer(double litros){
        if((litrosTanque + litros) <=  capacidadeTanque){
            litrosTanque += litros;
            System.out.printf("Abastecimento realizado com suceasso");
        }else{
            System.out.printf("Quantidade de combustivel excedeu a capacidade");
        }       
        
    }
    
    
    public void exibir(){
        System.out.printf("Marca: %s\n", this.getMarca());
        System.out.printf("Modelo: %s\n", this.getModelo());
        System.out.printf("Quilometragem: %f\n", this.getQuilometragem());
        System.out.printf("Capacidade Tanque: %f\n", this.getCapacidade());
        System.out.printf("Litros em Tanque: %f\n", this.getLitrosTanque());
    }
    
    
    
}

CLASSE AUTOMOVEIS


package transxerez;

/**
 *
 * @author Heladio
 */
public class Automovel extends Transportes {

    // DECLARAÇÃO DE VARIAVEIS
    
    private String placa;
    
    
    // DECLARAÇÃO DE COSNTRUTORES
    
    public Automovel(){}
    
    public Automovel(String marca, String modelo, double km, double capa, double litros, String plac ){
    
        super(marca, modelo, km, capa, litros);
        placa = plac;
        
    }
    
    // METODOS DE ACESSO
    
    public void setPlaca(String plac){
        placa = plac;
    }
    
    public String getPlaca(){
        return placa;
    }
    
    
    // METODOS PARA EXECUTAR AÇOES
    
    public void mover(double kms){
    super.setQuilometragem(kms);
    super.setLitrosTanque(super.getLitrosTanque() - (kms/8)); 
        
    }
    
    
    public void exibir(){
        super.exibir();
        System.out.printf("Placa: %s\n", this.getPlaca());
    }


    
    
    
    
    
    
    
    
    
}

Não compilei, mais dando uma rápida olhada você não inicio umas das duas variáveis( int aux1; na linha 9) que você declarou dentro do método main, na classe MAIN, sabendo que dentro de métodos as variáveis não ganham um valor padrão e por isso precisam ser inicializadas.

taaqui,

Quando é variável de tipo primitivo acho que nem precisa inicializar.

heladioxerez,

public void setQuilometragem(double km){ quilometragem += km; }
Como quilometragem não é de tipo primitivo (ela é Double e não double), você precisa ver se ela é nula (ela é uma referência para um objeto).

O problema é q na assinatura da variável ele declarou como java.lang.Double

private Double quilometragem;

Quando tenta incrementar com o primitivo (Java 5 faz auto-casting) passado, toma um NullPointerException.

Tenta inicializar a variável.

private Double quilometragem = new Double();

Abraços

Troque as declarações de seus atributos de “Double” para “double”(Tipo primitivo) que fica bem mais facil do que vc ter que inicializar as variaveis.

ex:

//de 
private Double quilometragem;
//para
private double quilometragem;

abraço