0

方法是记录球员完成一个洞时的击球次数。成功记录笔画时,该方法返回 true。有2个注意事项:(1)该洞必须按顺序记录,并且必须以1开头。如果收到的洞是乱序的,则不记录分数并返回false (2)洞号也必须有效。您不能为小于 1 或大于球场上的洞数的洞记录分数。调试我的代码时,会给出 java.lang.NullPointerException。这是什么意思,我该如何解决这个问题。

注意:holesPlayed 是一个实例变量,赋值为 0

这是我所拥有的:

public boolean recordStrokes(int holeNumber, int strokes) {
    if ((holeNumber >= 1) && 
        (holeNumber <= this.holesPlayed) && 
        (holeNumber == holesPlayed + 1 
    {
        scores[holeNumber -1] = strokes;    
        holesPlayed = holesPlayed + 1;    
        return true;
    }    
    else { 
        return false;  
    }
}
4

2 回答 2

0

你错过了 IF 条件的右括号

 public boolean recordStrokes(int holeNumber, int strokes) {
        if ((holeNumber >= 1) && 
            (holeNumber <= this.holesPlayed) && 
            (holeNumber == holesPlayed + 1 )) <-- this brackets are missing in your code
        {
            scores[holeNumber -1] = strokes;    
            holesPlayed = holesPlayed + 1;    
            return true;
        }    
        else 
        { 
            return false;  
        }
    }
于 2013-03-31T02:14:58.000 回答
0

我不能确定,但​​我会做一个scores从未初始化过的猜测。您是否在某处使用诸如

scores = new int[NUM_HOLES];

?

于 2013-03-31T02:15:23.150 回答