Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 试着抓住我节目中的混乱_Java_List_Try Catch - Fatal编程技术网

Java 试着抓住我节目中的混乱

Java 试着抓住我节目中的混乱,java,list,try-catch,Java,List,Try Catch,我正在开发一个小型的snake and ladder游戏,其中我正在生成snakesgenerator类,该类验证蛇是否在逻辑上构造蛇 我已经拿了蛇的头尾排列图 snake类有getTail(),getHead()方法,这些方法返回对象在电路板上的位置 position.getPositionNumber()返回从1到100的整数值范围 我在班上有一张蛇的名单 snakegenerator是一个类,用于验证蛇在逻辑上是否正确(它必须删除构造错误的蛇) 如果两条蛇有相同的头,那么它必须忽略一条蛇(

我正在开发一个小型的snake and ladder游戏,其中我正在生成snakesgenerator类,该类验证蛇是否在逻辑上构造蛇

我已经拿了蛇的头尾排列图

snake类有
getTail()
getHead()
方法,这些方法返回对象在电路板上的位置

position.getPositionNumber()
返回从1到100的整数值范围

我在班上有一张蛇的名单

snakegenerator是一个类,用于验证蛇在逻辑上是否正确(它必须删除构造错误的蛇)

如果两条蛇有相同的头,那么它必须忽略一条蛇(最新的蛇),并与其他蛇一起提供棋盘

这是board类:

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());
            }
    }         
}
公共课程委员会{
私有int[]头={15,16,15,15};
私有int[]tail={3,4,5,6};
List snakes=new ArrayList();
公众委员会(){
蛇;
ListIterator ListIterator=snakes.ListIterator();
while(listIterator.hasNext()){
snake=listIterator.next();
System.out.println(snake.getHead().getPositionNumber());
}
SnakesGenerator SnakesGenerator=新的SnakesGenerator(snakes);
snakes=snakesGenerator.addSnakes();
listIterator=snakes.listIterator();
while(listIterator.hasNext()){
snake=listIterator.next();
System.out.println(snake.getHead().getPositionNumber());
}
}         
}
蛇发生器等级如下所示

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;
    }
}
公共类SnakesGenerator{
List snakes=new ArrayList();
公共蛇生成器(列出蛇){
超级();
蛇=蛇;
}
@抑制警告(“未选中”)
公共列表addSnakes(){
蛇;
Snake snakePrevious=null;
Collections.sort(snakes,newsnakescompator());
int i=0;
//ListIterator ListIterator=snakes.ListIterator();
//System.out.println(“这是addsnakes”);
用于(蛇s:蛇)
System.out.println(s.getTail().getPositionNumber());
snakePrevious=snakes.get(0);
System.out.println(“在方法执行之前”
+snakePrevious.getTail().getPositionNumber());

对于(i=1;i我的猜测是您正在抛出一个异常,但因为您忽略了它,即没有打印出来,所以您不知道它是什么或是什么导致了它

我怀疑您的问题是,当您删除一条蛇时,您的项目比您预期的少,并且您正在尝试从不再存在的
snakes
中获取元素

我建议您尝试使用调试器调试您的程序,方法是逐步完成代码并了解它真正在做什么


顺便说一句:抛出一个异常并立即捕获它是令人困惑和毫无意义的。

161 rep。你应该知道如何格式化代码,并在句子开头使用shift键。我不会试图涉过这一混乱局面。我认为最后一个try-catch块没有多大意义。为什么在if中抛出一个异常?你应该ld不使用try-catch进行流量控制。异常应用于表示异常行为,在您的情况下,您会为预期行为引发异常。有关更多信息,请参阅此处:我引发异常是为了告诉游戏开发人员未添加某某snake…当您立即捕捉异常时,您已发布的消息将永远不会写入异常。我认为您对异常的用法有一些误解。@PratapMurukutla这不是异常所说的,并且您无论如何都会丢弃异常,因此它是否会发生也无所谓。我不清楚为什么catch块中的代码不是引发异常的位置。