我有以下代码,它在 java 应用程序屏幕中围绕框的周边移动图标,首先将屏幕向上移动 19 次,然后向右旋转,直到它回到原始起始位置之前的步骤 -
public class MyClass {
public static void moveNTimes(MyObject main, int numberOfMoves) {
for(int i = 0; i < numberOfMoves; i++) {
main.move();
}
}
public static void main(String[] args) {
MyObject main = new MyObject();
for (int i = 19; i >=0; i--){
moveNTimes(main, i);
main.turnRight();
i = i + 1;
}
}
}
我的问题是,当它到达盒子周边的末端时,我需要它变成下一行,其中有 18 个位置可以围绕下一个周边移动,然后是 17 个位置,等等,直到图标完成屏幕中心。
有没有办法对代码应用计数,以便它知道何时提取原始数字集之一?我已经成功地做到了这一点,只需重复代码,每次将整数手动设置少一。现在,图标一旦完成第一个周长就会停止。
最佳答案
您可以创建一个将移动次数作为参数的方法:
public void moveNTimes(YourObject main, int numberOfMoves) {
for(int i = 0; i < numberOfMoves; i++) {
main.move();
}
}
并根据需要多次调用该方法,而无需重复代码:
for (int i = 19; i >=0; i--) {
moveNTimes(main, i);
}
或者
您可以向主对象添加 moveNTimes(int numberOfMoves)
方法。
注意:
- 您可以在 for 循环内声明变量
i = i + 1
可以写成i++
编辑
您的描述不是很清楚,但这可能就是您所要求的:
for (int i = 19; i >= 2; i--){
for (int j = 0; j < 3; j++) {
moveNTimes(main, i);
main.turnRight();
}
}
这将向上移动 19 次,然后向右移动 19 次,向下移动 19 次,向左移动 18 次,向上移动 18 次,向右移动 18 次,向下移动 17 次等,并且应该在盒子的中间完成(您可能需要在最后进行额外的移动) ,不确定)。
关于基于Java的图标移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11416446/