我正在开发一个小蛇和梯子游戏,我正在生成蛇类生成器类,用于验证蛇是否在逻辑上构造蛇。
我已经采取了头部和尾部阵列的头部和尾部蛇。
snake类具有getTail()
,getHead()
方法,可以返回棋盘上的对象位置。
position.getPositionNumber()
返回1到100之间的整数值范围。
我在课堂上有蛇的arrraylist。
蛇形发生器是一个验证蛇在逻辑上是否正确的类(它必须去除构造中错误的蛇)。
如果这两条蛇的头部相同,那么它就必须忽略一条蛇(最新的蛇)并给其他蛇带来其他蛇。
这是董事会成员:
public class Board {
private int[] head = { 15,16,15,15};
private int[] tail = {3,4,5,6};
List<Snake> snakes = new ArrayList();
public void getBoard() {
Snake snake;
ListIterator<Snake> listIterator = snakes.listIterator();
while (listIterator.hasNext()) {
snake = listIterator.next();
System.out.println(snake.getHead().getPositionNumber());
}
SnakesGenerator snakesGenerator = new SnakesGenerator(snakes);
snakes=snakesGenerator.addSnakes();
listIterator = snakes.listIterator();
while (listIterator.hasNext()) {
snake = listIterator.next();
System.out.println(snake.getHead().getPositionNumber());
}
}
}
下面给出了snakegenerator类。
public class SnakesGenerator {
List<Snake> snakes = new ArrayList();
public SnakesGenerator(List<Snake> snakes) {
super();
this.snakes = snakes;
}
@SuppressWarnings("unchecked")
public List<Snake> addSnakes() {
Snake snake;
Snake snakePrevious = null;
Collections.sort(snakes, new SnakesCompator());
int i=0;
// ListIterator<Snake> listIterator = snakes.listIterator();
// System.out.println("hai this is addsnakes");
for (Snake s : snakes)
System.out.println(s.getTail().getPositionNumber());
snakePrevious =snakes.get(0);
System.out.println("before the method execution"
+ snakePrevious.getTail().getPositionNumber());
for(i=1;i<3;i++) {
snake=snakes.get(i);
System.out.println(snake.getTail().getPositionNumber());
try {
if (snakePrevious.getHead().getPositionNumber() == snake
.getHead().getPositionNumber()) {
snakes.remove(snake);
throw new Exception("two snakes have same head..");
}
} catch (Exception e) {
for (Snake s : snakes)
System.out.println(s.getTail().getPositionNumber());
}
snakePrevious = snake;
}
return snakes;
}
}
我只能删除一个副本,程序正在终止。
我认为使用try catch块时遇到问题。
答案 0 :(得分:1)
我的猜测是你抛出一个例外,但因为你忽略了它,即没有将它打印出来,你不知道它是什么或是什么导致它。
我怀疑你的问题是,当你移除一条蛇时,你的物品数量少于预期,而你正试图从snakes
获得一个不再存在的元素。
我建议您尝试使用调试器调试程序,方法是逐步完成代码并了解它的实际用途。
BTW:抛出一个异常并立即捕获它是令人困惑和毫无意义的。