Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New to the CF scene
    Join Date
    Sep 2010
    Posts
    8
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Exception in thread "main" java.lang.NullPointerException

    So, i am trying to build a simple database (array of Car type).
    the code is quite simple but for some reason i keep getting the same error after running the program (compiling went through). so i have 3 classes:

    PHP Code:
    class DataBase {
        
        private 
    Car[] database = new Car[3];

        public 
    DataBase() {
        for (
    int i=0i<database.lengthi++) {
            
    database[i].formatCar();
        }
        
        } 
        
        public 
    void addCar(Car car1) {
        for (
    int i=0i<database.lengthi++) {
            if (
    database[i].getModel()=="empty") {
            
    database[i]=car1;
            }
        }
        } 

        public 
    void printDataBase() {
        
    int i=0;
        while (
    i<database.length) {
            
    database[0].printCar();
            
    i=i+1;
        }
        
        }


    PHP Code:
    class mainpage {

        public static 
    void main (String[] args) {
        
    Car car1 = new Car();
        
    DataBase database1 = new DataBase();
        
    car1.setCar();
         
    database1.addCar(car1);
        
    database1.printDataBase();
        }


    PHP Code:
    import java.util.*;

    class 
    Car {

        private 
    String _model;
        private 
    String _color;
        private 
    int _year;
        private 
    Scanner _input = new Scanner(System.in);

        public 
    Car() {

        
    _model "empty";
        
    _color "empty";
        
    _year 0;

        }

        public 
    void setCar() {

        
    System.out.print("Enter model: ");
        
    _model _input.next();
        
    System.out.print("Enter color: ");
        
    _color _input.next();
        
    System.out.print("Enter year: ");
        
    _year _input.nextInt();

        }

        public 
    void formatCar() {
        
    _model "empty";
        
    _color "empty";
        
    _year 0;
        }

        public 
    String getModel() {
        
    String model=_model;
        return 
    model;
        }

        public 
    String getColor() {
        
    String color=_color;
        return 
    color;
        }

        public 
    int getYear() {
        
    int year=_year;
        return 
    year;
        }

        public 
    void printCar() {
        
    System.out.println("Model :"+_model);
        
    System.out.println("Color :"+_color);
        
    System.out.println("Year :"+_year);
        }



    And the error i get:
    PHP Code:
    yotam@main computer:~/Documents/java/newcarjava mainpage 
    Exception in thread 
    "main" java.lang.NullPointerException
        at DataBase
    .<init>(DataBase.java:7)
        
    at mainpage.main(mainpage.java:5)
    yotam@main computer:~/Documents/java/newcar
    i searched for possible reasons and i came across the possibility that the array wasn't initialized, but then i changed to constructor to set model and color to "empty" and year to 0.
    so now i have no clue, need your help guys.
    Thanks!

  • #2
    Senior Coder TheShaner's Avatar
    Join Date
    Sep 2005
    Location
    Orlando, FL
    Posts
    1,126
    Thanks
    2
    Thanked 40 Times in 40 Posts
    It's because in this line:
    Code:
    private Car[] database = new Car[3];
    You are creating a new array of Car, but when you do this:
    Code:
    for (int i=0; i<database.length; i++) {
        database[i].formatCar();
    }
    The code in red returns a null Car object because the Car instance has not been created yet for that position in the array. Then when it attempts to run the formatCar method, it returns a NullPointerException because you're trying to do the formatCar method on a null object. Before doing the line in red, you should do:
    Code:
    database[i] = new Car();
    However, looking at your code, you should replace the array and use an ArrayList object instead like so:
    Code:
    List<Car> database = new ArrayList<Car>(3);
    Then you won't have to create your own addCar method since an ArrayList already has that method implemented.

    -Shane

  • Users who have thanked TheShaner for this post:

    yotamoo (09-23-2010)

  • #3
    New to the CF scene
    Join Date
    Sep 2010
    Posts
    8
    Thanks
    1
    Thanked 0 Times in 0 Posts
    i can't thank you enough, plus the dynamic array is just what i needed.
    thanx!

    also - can you pls link me to a tutorial explaining more about the list you told me about? i wasn't really sure what to look for.

    p.s. can i mark this thread solved?
    Last edited by yotamoo; 09-23-2010 at 02:57 AM.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •