gpt4 book ai didi

java - 使用方法通过查找匹配值然后使用不同的输入变量进行更新来更新二维数组

转载 作者:行者123 更新时间:2023-12-02 08:59:39 25 4
gpt4 key购买 nike

假设我有一个名为 GameBoard 的公共(public)类,它将是一个 4 行 5 列的二维数组。数组中的空格填充有 1 到 20 之间的 String 值。将抽取一张具有名称的牌(例如 King of Spades)。如果用户输入 15,我会将其存储在名为 userLocationString 变量中。创建获取输入位置并使用卡片名称更新数组的方法的最有效方法是什么? for 循环效率最高吗?

public GameBoard() {
square = new String[4][5];
square[0][0] = new String("1");
square[0][1] = new String("2");
square[0][2] = new String("3");
square[0][3] = new String("4");
square[0][4] = new String("5");
square[1][0] = new String("6");
square[1][1] = new String("7");
square[1][2] = new String("8");
square[1][3] = new String("9");
square[1][4] = new String("10");
square[2][1] = new String("11");
square[2][2] = new String("12");
square[2][3] = new String("13");
square[3][1] = new String("14");
square[3][2] = new String("15");
square[3][3] = new String("16");
square[2][0] = new String(17);
square[3][0] = new String(18);
square[2][4] = new String(19);
square[3][4] = new String(20);

}

到目前为止,我的首选方法看起来像这样,但它在 userLocation = board[i][j] 下给了我错误代码“类型不匹配:无法将字符串转换为 boolean 值”

public String[][] updateBoard(String userLocation, Card card, String[][] board) {

for (int i = 0; i <4; i++)
{
for (int j = 0; j < 5; j++)
{
if(userLocation = board[i][j]) {

board[i][j] = card.name;

}
}
}

return board;

}

最佳答案

所以它无法编译的原因是你的 = 没有返回 boolean 表达式。 == 会,但它仍然不是你想要的,因为你想检查 String 内容是否相同,而不是它们是否是同一个对象,所以使用 .equals。

但是,不,我认为您不想依赖字符串来识别位置。如果想换卡怎么办?为什么在不需要的时候要仔细检查所有内容?

如果 i 是 1 到 20 之间的某个数字,则通过 square[(i-1)/5][(i-1)%5] 标识数组中的相应位置

这应该可以绕过匹配字符串所遇到的问题。

例如,您的构造函数变为:

public GameBoard() {
square = new String[4][5];
for (int i=1; i<=20;i++){
square[(i-1)/5][(i-1)%5]=""+i;//initialize with 1 to 20 if you like
}

并且userLocation是一个int

关于java - 使用方法通过查找匹配值然后使用不同的输入变量进行更新来更新二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60255992/

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