Java - Error de novato: java.lang.NullPointerException

 
Vista:

Error de novato: java.lang.NullPointerException

Publicado por Juan Antonio (1 intervención) el 10/06/2013 14:09:26
Hola a todos, lo primero comentar que soy nuevo en este foro y dar las gracias a todos por la colaboración activa que realizais en el. Actualmente me estoy iniciando en el mundo de la programación, soy ingeniero industrial pero debido a la poca demanda de empleo en mi especialidad he decidido renovarme estudiando algo de programación.

Mi problema es que estoy realizando un curso de Iniciación a java del ministerio de educación donde se plantea el siguiente problema (mi duda es solo la parte de incrementar los litros de aceite):

Desarrollar una clase llamada Motor que:

• Tenga dos atributos private de tipo int (litros de aceite) y de tipo int (CV).
• Tenga un constructor con un parámetro de tipo int para los CV. Los litros de aceite por defecto serán 0.
• Tenga un getter para cada uno de los atributos.
• Tenga un setter para los litros.

Desarrollar una clase llamada Coche que:

• Tenga un atributo private de tipo Motor, un atributo de tipo String (marca), otro de tipo String (modelo) y otro de tipo double con el precio acumulado con las averías.
• Tenga un constructor con dos parámetros de tipo String que inicialice la marca y el modelo.
• Tenga un getter para cada uno de los atributos.
• Un método acumularAveria que incrementará el importe gastado en averías.

Desarrollar una clase llamada Garaje que:

• Tendrá tres atributos, un coche, un String con la avería asociada y el número de coches que ha ido atendiendo.
• El garaje solo podrá atender a un coche en cada momento. Controlar esta premisa.
• Tenga un método aceptarCoche que recibe un parámetro de tipo Coche y la avería asociada. El garaje solo podrá atender a un coche en cada momento. Si ya esta atendiendo uno, que devuelva un false.
• Tenga un método devolverCoche que dejara al garaje en estado de aceptar un nuevo coche.

Desarrollar una clase llamada Actividad2 que en su método main:

• Cree un garaje.
• Cree 2 coches.
• El garaje irá cogiendo los coches y devolviéndolos, acumulando un importe aleatorio (Math.random()) de la avería tratada.
• Si la avería del coche es “aceite” incrementar en 10 los litros de aceite.
• Los coches entrarán al menos 2 veces en el garaje.
• Mostrar la información de los coches al final del main.


Nota: Para calcular un número aleatorio usaremos Math.random() que devuelve un double entre 0.0 y 1.0


MI SOLUCION ES:

- CLASE MOTOR -

public class Motor {

private int litros;
private int cv;

public Motor (int caballos){

this.litros = 0;
this.cv = caballos;


}

//getters

public int getLitros(){

return this.litros;
}

public int getCV(){

return this.cv;
}

//setters

public void setLitros(int l){

litros=l;

}

}
- CLASE COCHE -

public class Coche {

private Motor motor;
private String marca;
private String modelo;
private double precio_averias;

public Coche (String mar, String mod){

this.marca = mar;
this.modelo = mod;
}


//getters

public Motor getMotor(){
return this.motor;
}

public String getMarca(){
return this.marca;
}

public String getModelo(){
return this.modelo;
}

public double getPrecioAverias(){
return this.precio_averias;
}
//Metodo que incrementa gasto en averias
public void acumularAveria (double averia){

System.out.println("Precio del arreglo: " +averia);
this.precio_averias = this.precio_averias + averia;
}

- CLASE GARAJE -

public class Garaje {

private Coche c;
private String averia_asociada;
private int num_coches;
int l=0;


public Garaje(){

this.c = null;
this.averia_asociada = "";
this.num_coches = 0;

}
public void aceptarCoches (Coche coche, String averiacoche){

this.c=coche;
this.averia_asociada = averiacoche;

if (num_coches==0){
System.out.println("El coche ha podido entrar");


num_coches=1;

/*AQUI ESTA MI PROBLEMA, COMO ACUMULO LOS LITROS DE ACEITE PARA CADA COC HE?*/

if(this.averia_asociada.equals("aceite")){

int lit=c.getMotor().getLitros();
this.c.getMotor().setLitros(lit);


System.out.println("Total de litros de aceite repostados por este coche: " +c.getMotor().getLitros());
}


coche.acumularAveria(100*Math.random());

}
else{
System.out.println("El garaje se encuentra ocupado");
}

}

public void devolverCoches (){

System.out.println("Un coche sale del garaje");
num_coches = 0;

}

}
-CLASE ACTIVIDAD 2-

public class Actividad2 {


public static void main(String[] args) {

Garaje garaje = new Garaje();

Motor coche2= new Motor(110);
Coche primero = new Coche("Peugeot","205");
Coche segundo = new Coche("Seat","Leon");





garaje.aceptarCoches(primero,"aceite");

garaje.aceptarCoches(segundo,"filtros");

garaje.devolverCoches();

garaje.aceptarCoches(segundo,"aceite");

garaje.devolverCoches();

garaje.aceptarCoches(primero,"motor");

garaje.devolverCoches();

garaje.aceptarCoches(segundo,"aceite");


primero.getPrecioAverias();

System.out.println("El coche: " + primero.getMarca() + " " +primero.getModelo()+ " se ha gastado: " +primero.getPrecioAverias());

System.out.println("El coche: " + segundo.getMarca() + " " +segundo.getModelo()+ " se ha gastado: " +segundo.getPrecioAverias());




}



}



Mi problema es como acumular los litros de aceite a cada coche, parece que me falta inicializar el motor pero no se como... Agradeceria cualquier tipo de ayuda. MUCHAS GRACIAS!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder