• 中文
    • English
  • 注册
  • 查看作者
  • Java中Duplicate Case错误的问题,虽然很低级,但是很多人都会犯的错误

    最近在写贪吃蛇,在写蛇尾移动的方法的时候,用到了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赋值改为不同的值便解决了问题

    特此记录,保证以后不再犯如此低级的错误!

  • 0
  • 0
  • 0
  • 6.8k
  • 请登录之后再进行评论

    登录
    单栏布局 侧栏位置: