公牛和牛游戏程序Java。运行程序时空指针异常错误
我正在为游戏公牛和牛制作代码(http://en.wikipedia.org/wiki/Bulls_and_cows) 我的代码编译了,但是当我尝试在终端中运行它时,我得到了一个空指针异常错误,用于howManyBylls, playOneTurn和playGame。我找不到这个错误来自哪里。此外,该版本的游戏与其他公牛和牛的游戏不同,用户可以输入四位数的重复数字。我认为在大多数其他代码中,他们应该输入具有唯一数字的四位数字。公牛和牛游戏程序Java。运行程序时空指针异常错误
public int howManyBulls(String guess)
{
input = guess;
bulls = 0;
for (int i = 0; i<4; i++)
{
int k = Integer.parseInt(pattern.substring(i, i+1));
int l = Integer.parseInt(input.substring(i, i+1));
if (k == l) // checking for same value at same location
{
bulls++; // add one to bull if there is a match
}
}
return bulls;
}
public class Game{
private int turns;
private Oracle computer;
private Scanner input;
public String userInput;
public int bulls;
public int cows;
public Game(){
// creates new data type Oracle
computer = new Oracle();
turns = 0;
input = new Scanner(System.in);
}
public void playGame(){
// your code for the Game playGame method goes here
System.out.print("Please enter a 4 digit number: ");
userInput=input.next();
playOneTurn();
}
// plays a turn
public void playOneTurn(){
turns++;
// passes userInput into methods of howManyBulls() and howManyCows()
bulls = computer.howManyBulls(userInput);
cows = computer.howManyCows(userInput);
System.out.println(bulls+ " bulls");
System.out.println(cows+ " cows");
// checks if game is over
if (bulls < 4) // if bulls less than four then continue playing game
// if bulls = 4 then the number is correct
{
playGame();
} else { // done with game and print out number of turns
System.out.print("It took" + turns + " turns to guess "
+ "the correct number");
}
}
public void setPattern(String solution){
computer.setPattern(solution);
}
public String getPattern(){
return computer.getPattern();
}
}
它出现在howManyBulls()尚未初始化或已被设置为null的变量“pattern”中。它没有在您发布的代码中定义,并且是唯一尚未初始化的变量。空指针异常通常是通过调用空对象上的方法引起的,如果变量尚未初始化,则可能发生这种情况。
我创建了一个单独的方法,将字符串模式定义为将四个随机生成的数字连接成一个字符串。 – wics13 2014-10-28 16:57:19
@ wics13你在调用这个方法吗?换句话说,在调用这个方法之前,'pattern'变量是否被设置? (同时提示,在'howManyBulls'方法中设置一个断点,并查看哪个变量具体为null,然后从那里追踪它。) – 2014-10-28 17:07:41
请包括您在运行程序时获得的完整堆栈跟踪。 – Martin 2014-10-28 16:39:49
可能重复[什么是空指针异常,以及如何解决它?](http://*.com/questions/218384/what-is-a-null-pointer-exception-and-how-do -i-FIX-IT) – 2014-10-28 16:40:15
请输入4位数字:1223 异常线程 “main” 显示java.lang.NullPointerException \t在Oracle.howManyBulls(Oracle.java:68) \t在Game.playOneTurn(游戏。 java:38) \t at Game.playGame(Game.java:30) \t at BullsAndCows.main(BullsAndCows.java:11) – wics13 2014-10-28 16:43:35