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