最近在写贪吃蛇,在写蛇尾移动的方法的时候,用到了switch语句,没想到犯下了一个超级低级的错误
首先,代码如下:
package tv.zhangjia.entities; import java.awt.Point; import java.util.HashSet; import java.util.LinkedList; import java.util.Set; import tv.zhangjia.listener.SnakeListener; public class Snake { private LinkedList<Point> body = new LinkedList<Point>(); private Set<SnakeListener> listeners = new HashSet<SnakeListener>(); private int direction;//保存蛇头的方向 private static final int UP = 0; private static final int DOWN = 0; private static final int LEFT = 0; private static final int RIGHT = 0; public void addSnakeListener(SnakeListener l) { if(l != null) { this.listeners.add(l); } } public void move() { //蛇移动的方法 System.out.println("move"); //1.去尾 body.removeLast(); int x = body.getFirst().x;//蛇头的x坐标 int y = body.getLast().y;//蛇头的y坐标 switch(direction) { case UP://报错 y--; break; case DOWN://报错 y++; break; case LEFT://报错 x--; break; case RIGHT://报错 x++; break; } //2.去头 // body.addLast(); } }
每个case语句都提示Duplicate Case错误
这是Case常量表达式不唯一的情况导致的 ,说明case中有相同的值
于是我傻傻的检查每一个case语句,UP,DOWN,LEFT,RIGHT都没问题呀
最后却发现原来在定义UP,DOWN,LEFT,RIGHT的时候,赋值的都是0……
将UP,DOWN,LEFT,RIGHT赋值改为不同的值便解决了问题
特此记录,保证以后不再犯如此低级的错误!
请登录之后再进行评论