gpt4 book ai didi

Java简单游戏测试错误

转载 作者:行者123 更新时间:2023-11-30 04:52:06 25 4
gpt4 key购买 nike

我正在用java创建简单的棋盘游戏,它们运行顺利,但是我在测试时遇到了两次失败,我不明白它们背后的逻辑。

失败#1:玩家 1 克隆了他的国王并统治了预期的<8>,但结果是<1>

失败#2:符号应被视为空单元格。预期是<1>,但实际是<0>

这是我的代码:

import java.io.ObjectInputStream.GetField;

public class ChessBoard {
public static boolean belongsToPlayer(final char piece, final int player) { // method to check a piece is related to player 1 or 2
if (player == 0 && Character.isUpperCase(piece)) {
return true;
}
if (player == 1 && Character.isLowerCase(piece)) {
return true;
}
return false;
}

public static int getCount(final String[] board, final int player) { // method to return the number of pieces belonging to each player
int count = 0;

if (board.length == 0) {
return count = 0;
}
else if (board.length == 1) {
return count = 1;
}
else {
int size = board.length;
for (int i = 1; i < size; i++) {
for (int j = 0; j < board[i].length(); j++) {

if (belongsToPlayer(board[i].charAt(j), player)) {
count++;
}
}
}
}
return count;
}

}

and these are the test methods:
test #1
@Test(timeout = 1000)
public void test8KingsPlayer1() {
String[] board = {
"kkkkkkkk"
};
assertEquals("Player 1 has cloned his king and has dominated",
8, instance.getCount(board, PLAYER1));
}

test #2
@Test(timeout = 1000)
public void testAPieceOfCode() {
String[] board = {
"int factorIal(int n) {",
" int n = 8, r = 1; ",
" while (n-- > 1) ",
" r *= n; ",
" return r; ",
"} "
};
assertEquals("Symbols should be treated as empty cells.",
1, instance.getCount(board, PLAYER0));
}

有谁知道如何解决这个问题吗?

最佳答案

失败1:

else if (board.length == 1) {
return count = 1;
}

它立即返回 1,因为您向它传递了一个包含 1 个元素的 String[]。

失败2:

for (int i = 1; i < size; i++) {
...
if (belongsToPlayer(board[i] ...

数组索引从 0 开始。您从 1 开始,这会跳过数组中的第一个字符串。由于大写的我在第一排,所以没有计算在内。

关于Java简单游戏测试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9640496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com