听起来很傻,考虑到我已经成为CompSci Undergrad 2年了,这让我很难过;相当多,我有一个扫雷游戏,而不是自动将用户名和时间添加到排行榜(这是目标)。
但是对于我的生活,我无法得到出错的地方:
private LeaderBoard m_leaderBoard;
以下是调用“addToLeaderBoard”的方法。
public boolean setGameWin() {
try {
System.out.println("output");
m_won.loop(1);
m_time.stop();
m_tick.stop();
m_GameFinshed.setVisible(true);
m_GameFinshed.setIcon(new ImageIcon("images/GameWon.jpg"));
String v = "You Have won\n time taken- " + m_timePassed;
m_leaderBoard.addToLeaderBoard(m_player.getUsername(), m_timePassed);
// ^^ Exception is raised here
return true;
} catch (Exception x) {
return false;
}
}
和leaderBoard Class中的方法是这样的:
public void addToLeaderBoard(String m_username, String m_timePassed) {
System.out.println(m_username + m_timePassed);
}
但它没有打印出用户名或时间,我完全不明白为什么。
java.lang.NullPointerException
at game.GameController.setGameWin(GameController.java:214)
at game.GameController.mouseClicked(GameController.java:289)
打印的异常
答案 0 :(得分:1)
我认为你需要创建一个LeaderBoard实例
m_leaderBoard = new LeaderBoard()
尝试在catch之后添加一个日志,看看正在做什么
答案 1 :(得分:0)
如果m_leaderBoard
为空,m_player
为null
,或m_player.getUserName()
会引发异常,那么您的图标会更新,但m_leaderBoard.addToLeaderBoard()
赢了&#39被叫。
您应该使用调试器逐行浏览代码,以了解会发生什么。
您也不应该在catch
区块中删除例外情况 - 至少使用x.printStackTrace()
。