gpt4 book ai didi

java - 迭代对象列表并验证属性 (int) 是否相互跟随(例如 : (1, 2,3,4)、(3,4,5,6),但不是 (1,2,5) 或 (3,4,5 ,7))

转载 作者:行者123 更新时间:2023-12-01 21:41:45 25 4
gpt4 key购买 nike

我正在用 Java 开发一款棋盘游戏,我想验证字母放置在棋盘上时是否彼此“接触”。

我正在使用List<Letter> 。放置字母时,我会验证其是否垂直或水平对齐(使用字母的 (x,y) 位置)。我还定制了 2 个 Comparators对于我的Letter类,之后我可以对 List<Letter> 进行排序在 x 或 y 位置下方(取决于单词是垂直对齐还是水平对齐)。

现在为了验证字母是否彼此“接触”,我必须验证 x(或 y,取决于它的对齐方式)是否类似于: 1,2,3,4而不是1,2,3,5例如(这意味着字母 3 和 4 之间有一个“空格”)。

我必须迭代我的 List<Letter>但我不确切知道我必须在 foreach 内进行哪个测试。我必须比较 x第一个对象的 x下一个对象的位置,它必须是 x 的位置 +1。

我希望它很清楚,这里是我的代码和所涉及的类的一些片段,以便您可以理解一些结构。英语不是我的第一语言,所以请随时询问您是否需要任何精确性。预先感谢您的帮助!

由于我在 stackoverflow 上发布的内容不多,因此我尽力对消息中的文本进行格式化,希望你们能够阅读!

public class Letter {
int x,y;

public int getX() {
//...
}
public int getY() {
//...
}

public static Comparator<Letter> COMPARE_BY_X = (Letter a, Letter b) -> {
// ...
}

public static Comparator<Letter> COMPARE_BY_Y = (Letter a, Letter b) -> {
// ...
}

public int hashCode() {
//...
}
public boolean equals() {
//...
}

}


public class VerifyWord(List<Letter> word) {

private List<Letter> word;
//...


// list is sorted
for (Letter t : word) {
// what should I put there????
}


//...

}

最佳答案

不要使用 foreach 循环,因为这样您一次只能访问其中一个 Letter 元素。迭代索引并检查下一个元素的 x 坐标是否比当前元素的 x 坐标大 1。例如:

for (int i = 0; i < word.size() - 1; i++) {
if (word.get(i+1).getX() != (word.get(i).getX() + 1)) {
// error
}
}

关于java - 迭代对象列表并验证属性 (int) 是否相互跟随(例如 : (1, 2,3,4)、(3,4,5,6),但不是 (1,2,5) 或 (3,4,5 ,7)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36375894/

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