无法获得方法调用的基础知识吗?

时间:2016-03-18 14:13:24

标签: java

听起来很傻,考虑到我已经成为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)

打印的异常

2 个答案:

答案 0 :(得分:1)

我认为你需要创建一个LeaderBoard实例

m_leaderBoard = new LeaderBoard()

尝试在catch之后添加一个日志,看看正在做什么

答案 1 :(得分:0)

如果m_leaderBoard为空,m_playernull,或m_player.getUserName()会引发异常,那么您的图标会更新,但m_leaderBoard.addToLeaderBoard()赢了&#39被叫。

您应该使用调试器逐行浏览代码,以了解会发生什么。

您也不应该在catch区块中删除例外情况 - 至少使用x.printStackTrace()