请帮忙看看农夫带动物过河的代码,为什么会死循环
程序代码:
package com.itheima; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; /** * 第10题: 一位老农带着猫、狗、鱼过河,河边有一条船,每次老农只能带一只动物过河。 * 当老农不和猫狗鱼在一起时,狗会咬猫,猫会吃鱼,当老农和猫狗鱼在一起时,则不会发生这种问题。编程解决猫狗鱼过河问题。 * * */ public class Test10 { static int count=0;//记录船使用的次数 public static void main(String[] args){ //两个集合分别代表了左岸,右岸,初始时老农,猫,狗,鱼都在左岸。 LinkedList linkLeft=new LinkedList(); LinkedList linkRight=new LinkedList(); linkLeft.addLast("老农"); linkLeft.addLast("猫"); linkLeft.addLast("狗"); linkLeft.addLast("鱼"); //一个字符串数组,代表了船,同时船上同时只能有两个元素 String[] boat={"",""}; //准备过河,船上有老农 boat[0]=(String) linkLeft.remove(0); //左岸没有元素时停止循环 while(!linkLeft.isEmpty()){ //通过遍历,向左岸运送元素 for(int i=0;i<linkLeft.size();i++){ System.out.println("i是:"+i); //每运一个元素,左岸减少1 boat[1]=(String) linkLeft.removeFirst(); System.out.println("动物是:"+boat[1]); //调用函数判断左岸元素是否能共存 boolean flage=judge(linkLeft); //如果左岸元素可以共存 if(flage==true){ //说明船使用了一次 count++; //向右岸增加左岸的运送的元素 linkRight.addFirst(boat[1]); //判断右岸元素能否共存 boolean b=judge(linkRight); System.out.println(b); //如果能共存,就输出 if(b==true){ System.out.println("第"+count+"次,从左岸运到右岸,运输的是:"+boat[1]); break; } //如果不能共存,取走之前存放在右岸的元素,把此元素在放回左岸 else{ System.out.println("第"+count+"次,从左岸运到右岸,运输的是:"+boat[1]); boat[1]=(String)linkRight.removeLast(); count++; linkLeft.addLast(boat[1]);//为什么加上这句话之后程序就变成了死循环 System.out.println("第"+count+"次,从右岸运到左岸,运输的是:"+boat[1]); continue; } } //如果左岸元素不能共存,在左岸添加已经被删除的元素 else{ linkLeft.addLast(boat[1]); break; } } } // linkRight.add("老农"); // System.out.println("同时老农上岸"); System.out.println(linkRight); System.out.println(linkLeft); boat[0]=""; boat[1]=""; } //判断元素是否能共存 private static boolean judge(LinkedList list) { // TODO Auto-generated method stub if(list.contains("猫")&&list.contains("鱼")) return false; if(list.contains("猫")&&list.contains("狗")) return false; if(list.contains("猫")&&list.contains("狗")&&list.contains("鱼")){ System.out.println("sdsfs"); return true; } return true; } }linkLeft.addLast(boat[1]);//为什么加上这句话之后程序就变成了死循环
加上这句话之后就死循环了,帮我看看,急求!!!