JANNU
JANNU

Reputation: 13

run time error nullpointerexception for simple java prog

This program is just an explanation program from a java book . However after I compiled and ran the program I got a run time error. I am new to programming in java. The code is as follows:

class GuessGame{
  Player p1;
  Player p2;
  Player p3;
  public void startgame(){
    p1=new Player();    
    p1=new Player();
    p1=new Player();
    int guessp1=0;
    int guessp2=0;
    int guessp3=0;
    boolean p1isRight=false;
    boolean p2isRight=false;
    boolean p3isRight=false;
    int targetNumber= (int) (Math.random() * 10);
    System.out.println("Ï am thinking of a number between 0 and 9");
    while(true){
    p1.guess();
    p2.guess();
    p3.guess();
    guessp1=p1.number;
    System.out.println("Player 1 guessed " +guessp1);
    guessp2=p2.number;
    System.out.println("Player 2 guessed " +guessp2);
    guessp3=p3.number;
    System.out.println("Player 3 guessed " +guessp3);
    if(guessp1==targetNumber)
      p1isRight=true;
    if(guessp2==targetNumber)
      p2isRight=true;
    if(guessp3==targetNumber)
      p3isRight=true;
    if(p1isRight || p2isRight || p3isRight){
        System.out.println("We have a winner!!");
        System.out.println("Player 1 got it right ?" +p1isRight);
        System.out.println("Player 2 got it right ?" +p2isRight);
        System.out.println("Player 3 got it right ?" +p3isRight);
        System.out.println("Game Over");
        break;
    }
    else{
        System.out.println("Players will have to try again");
    }
    }
  }
}

class Player{
    int number=0;
    public void guess(){
        number= (int) (Math.random() * 10); 
        System.out.println("Ï am guessing " +number);
    }
}

public class GameLauncher{
  public static void main(String [] args){
    GuessGame game=new GuessGame();
    game.startgame();
  }
}

The error i get is :

? am thinking of a number between 0 and 9
? am guessing 0
Exception in thread "main" java.lang.NullPointerException
        at GuessGame.startgame(GameLauncher.java:19)
        at GameLauncher.main(GameLauncher.java:59)

Upvotes: 0

Views: 114

Answers (3)

amit kate
amit kate

Reputation: 120

You did mistake while initiating object

        p1=new Player();    
        p1=new Player();
        p1=new Player();

Corrected code is:

        p1=new Player();    
        p2=new Player();
        p3=new Player();

Upvotes: 1

Ankur Singhal
Ankur Singhal

Reputation: 26067

p2 and p3 are never intialized. Must be a silly mistake, you have made.

Please intialize the variables.

p1=new Player();    
p2=new Player();
p3=new Player();

Upvotes: 1

Elliott Frisch
Elliott Frisch

Reputation: 201439

The first three lines of startgame() are

p1=new Player();    
p1=new Player();
p1=new Player();

but should be

p1=new Player();
p2=new Player();
p3=new Player();

Otherwise p2 (and later p3) is null when you try and access it.

Upvotes: 3

Related Questions