java - 简单java程序的运行时错误nullpointerException

标签 java nullpointerexception runtime-error

这个程序只是java书中的一个解释程序。但是,在编译并运行该程序后,我遇到了运行时错误。我是java编程新手。 代码如下:

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();
  }
}

我得到的错误是:

? 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)

最佳答案

startgame() 的前三行是

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

但应该是

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

否则,当您尝试访问它时,p2(以及后来的p3)将为null

关于java - 简单java程序的运行时错误nullpointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28060899/

相关文章:

java - SocketException:连接在 JRE 1.6 上重置,而不是在 JRE 11 上重置

java - log4j 是否提供任何机制来每日归档日志?

android - getExtras(name).getString 和 getIntent().getStringExtra(name) 的区别

python - 调用 hub.text_embedding_column 方法时如何修复 "RuntimeError: Missing implementation that supports: loader"?

java - 使用 Jackson 库自定义 pretty-print

java - Android 在内部根目录中创建文件夹

java - "AWT-EventQueue-0"java.lang.NullPointerException 异常

android - 在 Activity 中使用 Google Plus 和 Facebook 登录时如何解决错误?

java - Java越界错误

c++ - push_back 到 vector 时出现运行时错误