我正处于用Java创建保龄球计划的初期阶段。我目前有一个名为BowlingGameTest的JUnit测试文件和一个名为Game的Java类......这些都属于我的Java项目BowlingGame。我在BowlingGameTest文件中有以下代码:
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
private Game g;
protected void setUp() throws Exception {
g = new Game();
}
private void rollMany (int n, int pins) {
for (int i = 0; i < n; i++) {
g.roll(pins);
}
}
public void testGutterGame() throws Exception {
rollMany(20,0);
assertEquals(0, g.score());
}
public void testAllOnes() throws Exception {
rollMany(20,1);
assertEquals(20, g.score());
}
public void testOneSpare() throws Exception {
rollSpare();
g.roll(3);
rollMany(17,0);
assertEquals(16,g.score());
}
public void testOneStrike() throws Exception {
g.roll(10); //strike
g.roll(3);
g.roll(4);
rollMany(16,0);
assertEquals(24, g.score());
}
private void rollSpare() {
g.roll(5);
g.roll(5);
}
}
以及我的Java类中的以下代码:Game:
public class Game {
private int rolls[] = new int[21];
private int currentRoll = 0;
public void roll(int pins) {
rolls[currentRoll++] = pins;
}
public int score() {
int score = 0;
int frameIndex = 0;
for (int frame = 0; frame < 10; frame++) {
if (rolls[frameIndex] == 10) //strike
{
score += 10 +
rolls[frameIndex + 1] +
rolls[frameIndex + 2];
frameIndex++;
}
else if (isSpare(frameIndex))
{
score += 10 + rolls[frameIndex + 2];
frameIndex += 2;
} else {
score += rolls[frameIndex] +
rolls[frameIndex+1];
frameIndex += 2;
}
}
return score;
}
private boolean isSpare(int frameIndex) {
return rolls[frameIndex] +
rolls[frameIndex + 1] == 10;
}
}
我该如何解决这个问题?我知道我可以简单地更改assertEquals代码中的数字,但我想要那些数字,16和24。