-2

I have 2 classes and 2 interfaces in my project. In my main(), i have Null Pointer Exception on produce() function. I tried to do produce function to static but it didn't work for me well. Here is my codes, what's the problem ?

This is my CarProjectTest.java codes

import java.util.Scanner;

public class CarProjectTest{
    private static int velocity;
    private static double time;
    private double price;
    private CarDecorator carDecorator;
    public static void main(String[] args){
        String carType;
        Scanner user_input = new Scanner( System.in );
        // TODO initiate factory!
        ICarFactory factory = null;
        System.out.print("Lütfen üretilecek arabanın modelini giriniz: ");
        carType = user_input.next();
        System.out.println(carType);
        System.out.print("Lütfen ortalama hızı giriniz: ");
        velocity = user_input.nextInt();
        System.out.println(velocity);
        System.out.print("Lütfen zamanı giriniz: ");
        time = user_input.nextDouble();
        System.out.println(time);

        ICar car1 = factory.produce(carType);

        System.out.println("Price: " + car1.getPrice());
        System.out.println("Message: " + car1.getMessage(90));
        System.out.println("Fuel Consumption: " + car1.getFuelConsumption(100, 1.2));

        /*car1 = AirConditioningDecorator(car1); // please read the name carefully and think about the hints
        System.out.println("Price: " + car1.getPrice()); // Price should increase by 1000 TL

        car1 = AutoShiftDecorator(car1);
        System.out.println("Price: " + car1.getPrice()); */
    }

    //functions
        public ICar produce(String carType){
        if(carType.equals("TN100")){
            carDecorator.setEngineVolume(1.33);
            carDecorator.setWeight(768);
            carDecorator.setPrice(20000);
            carDecorator.setFuelConsumption(velocity, time, 5);
                                   }
        else if(carType.equals("TN200")){
            carDecorator.setEngineVolume(2);
            carDecorator.setWeight(900);
            carDecorator.setPrice(25000);
            carDecorator.setFuelConsumption(velocity, time, 7.2);       
                                        }
        else if(carType.equals("TN300")){
            carDecorator.setEngineVolume(2.4);
            carDecorator.setWeight(1100);
            carDecorator.setPrice(30000);
            carDecorator.setFuelConsumption(velocity, time, 9);
                                        }
        return carDecorator.getDecoratedCar();
                                        }

}

and there is my ICarFactory class

public interface ICarFactory {

    public ICar produce(String carType);

}

This is the error what i take;

Exception in thread "main" java.lang.NullPointerException at com.project.factory.CarProjectTest.main(CarProjectTest.java:25)

25th line is: ICar car1 = factory.produce(carType); in Test class

1 Answers1

0

Your ICarFactory factory is initiated to null, that's why you get a NPE when trying to call it's methods.

If you want to call the produce method, you can do it like so:

ICar car1 = produce(carType);

Since you are implementing the produce method in your CarProjectTest class.

Marcus
  • 6,697
  • 11
  • 46
  • 89