gpt4 book ai didi

java - 我正确地转换了这个伪代码吗?

转载 作者:行者123 更新时间:2023-12-02 02:30:01 24 4
gpt4 key购买 nike

我只是想在提交作品之前确保我在下面编写的代码已正确翻译。方法确实有效,但是我感觉我可能写错了。

伪代码:

assign i the value 0

WHILE i is less than the length of the array minus 1

let bubbleI be the bubble at index i in the bubbles array

assign j the value i + 1

WHILE bubbleI is not popped AND j is less than the length of the bubbles
array

let bubbleJ be the bubble at index j in the bubbles array
IF bubbleJ is not popped AND bubbleI is touching bubbleJ
pop both bubbleI and bubbleJ

END IF

increment j by 1

END WHILE

increment i by 1

END WHILE

我的代码:

private void popAll() {

int i = 0;

while (i < bubbles.length - 1){

bubbles[i] = bubbles[i];
int j = i + 1;

while (bubbles[i].isPopped() == false && j < bubbles.length){

bubbles[j] = bubbles[j];

if (bubbles[j].isPopped() == false && bubbles[i].isTouching(bubbles[j]) == true){

bubbles[i].pop();
bubbles[j].pop();
}
j++;
}
i++;
}
}

最佳答案

我认为“让 bubbleI 成为 bubbles 数组中索引 i 处的气泡”应该变成 Bubble bubbleI = bubbles[i];,而不是实际上不执行任何操作的赋值。

在 if 语句中比较 truefalse 也是不寻常的 - foo == truefoo 完全相同,并且 foo == false!foo 完全相同。

最后,带有初始化和增量的 while 循环正是 for 语句的用途,所以我会像这样编写整个内容:

private void popAll() {
for (int i = 0; i < bubbles.length - 1; i++) {
Bubble bubbleI = bubbles[i];

for (int j = i + 1; !bubbleI.isPopped() && j < bubbles.length; j++) {
Bubble bubbleJ = bubbles[j];

if (!bubbleJ.isPopped() && bubbleI.isTouching(bubbleJ)) {
bubbleI.pop();
bubbleJ.pop();
}
}
}
}

或者,您可以保留 while 循环。目前还不清楚您是否需要逐字翻译伪代码,或者尝试编写惯用代码。

关于java - 我正确地转换了这个伪代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47253867/

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