• 中文
    • 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.3k
    • 请登录之后再进行评论

      登录

      赞助本站

      • 支付宝
      • 微信
      • QQ

      感谢一直支持本站的所有人!

      单栏布局 侧栏位置: