Java搜索树算法

Java搜索树算法,java,algorithm,tree,runtime-error,nosuchelementexception,Java,Algorithm,Tree,Runtime Error,Nosuchelementexception,我们正在为学校的一个项目制作幻灯片。我们成功地制作了这个拼图,但现在我们想制作一个“人工智能”。这意味着计算机可以计算出最短的解并解决这个难题 我们正在做一棵树,这样他就能找到解决办法。我们总是有“不接触元素”的毛病 ArrayList positiesVoorHint=这是碎片在ArrayList中的位置,我们自己进行了洗牌 oplossingsposities.add(i)=这些是索引0上工件的名称,这是工件编号1 我们还在另一个类中定义了UP、DOWN、LEFT、RIGHT方法,它们工作得

我们正在为学校的一个项目制作幻灯片。我们成功地制作了这个拼图,但现在我们想制作一个“人工智能”。这意味着计算机可以计算出最短的解并解决这个难题

我们正在做一棵树,这样他就能找到解决办法。我们总是有“不接触元素”的毛病

ArrayList positiesVoorHint=这是碎片在ArrayList中的位置,我们自己进行了洗牌

oplossingsposities.add(i)=这些是索引0上工件的名称,这是工件编号1

我们还在另一个类中定义了UP、DOWN、LEFT、RIGHT方法,它们工作得非常好

testPuzzelOpgelost=testpuzzlepgelost

我们还必须克隆列表,因为我们的方法有上、下、左、右。别担心

(我们的母语不是英语)


这是我们在单击按钮时使用的代码,因此他使距离最短解决方案更近了一步:

public ArrayList<Integer> HintUitvoeren()
 {
  ArrayList<Integer> positiesNaHint;
  HintBerekenen2 hint = new HintBerekenen2(posities, dimensie);
  ArrayList<ArrayList<Integer>> positieMatrix = hint.oplossingspad;
  afbeeldingenPlaatsen();
  positiesNaHint = positieMatrix.get(1);
  return positiesNaHint;
 }
public ArrayList HintUitvoeren()
{
ArrayList positiesNaHint;
HintBerekenen2提示=新的HintBerekenen2(位置、尺寸);
ArrayList positieMatrix=hint.oplossingspad;
Afbeeldingenplatsen();
positiesNaHint=positieMatrix.get(1);
返回正数;
}
这段代码应该很好 问题应该在这里:

这是代码;(由于某些原因,它不会显示为代码,也带有4个空格)

import java.util.ArrayList;
导入java.util.HashMap;
导入java.util.Iterator;
导入java.util.LinkedList;
导入java.util.Map;
导入java.util.Queue;
导入java.util.Set;
公共类HintBereken2扩展到Bewegingen
{
wachtrij;
地图吊杆;
内部尺寸;
Bewegingen bew;
ArrayList oplossingspad;
ArrayList Meestresentposities、oplossingsposities;
公共HintBerekenen2(数组列表positiesVoorHint,内部尺寸)
{
System.out.println(“提示启动HIER”);
this.dimensie=dimensie;
wachtrij=newlinkedlist();
boom=newhashmap();
bew=新的Bewegingen();
//Oplossings数组列表maken.([1,2,…(dimensie*dimensie)-1,(dimensie*dimensie)]
oplossingsposities=新的ArrayList();
对于(int i=1;i<(dimensie*dimensie)+1;i++)
{
增加(i);
}
voegToeAanBoom(positiesVoorHint,null);
berekenen();
}
void voegToeAanBoom(ArrayList Nieuweposite,ArrayList oudePositie)
{
如果(!吊杆容器(Nieuweposite))
{
wachtrij.add(Nieuweposite);
动臂.推杆(Nieuweposite,oudePositie);
}
}
void berekenen()
{
while(oplossingspad==null)
{
系统输出打印LN(wachtrij+“voor删除”);
ArrayList lijst=this.wachtrij.remove();
System.out.println(wachtrij+“na-remove”);
这是我的名字(lijst);
本·唐(lijst);
这是左(lijst);
这是对的(lijst);
}
}
私有无效测试Puzzelopgelost(ArrayList PositiesVoorBewing,ArrayList PositiesNaBewing)
{
System.out.println(“测试字uitgevoerd”);
System.out.println(positiesVoorBeweging+“positiesVoorBeweging in de testPuzzel”);
System.out.println(positiesNaBeweging+“positiesNaBeweging in de testPuzzel”);
voegToeAanBoom(PositiesNabeking,PositiesVoorBeking);
if(正数等于正数)
{
ArrayList zoekPositie=正态分布;
oplossingspad=newarraylist();
while(zoekPositie!=null)
{
oplossingspad.add(0,zoekPositie);
zoekPositie=boom.get(zoekPositie);
}
}
}
作废(阵列列表位置浏览或删除)
{
int INDEXLEGSTUKJE=位置VOORBEGING.indexOf(尺寸*尺寸);
ArrayList cloneLijst=(ArrayList)positiesvoorbewing.clone();
meestRecentePosities=bew.UP(尺寸、位置、尺寸);
if(会议中心位置!=cloneLijst)
{
testPuzzelOpgelost(cloneLijst,会展中心);
}
}
向下作废(阵列列表位置查看或删除)
{
int INDEXLEGSTUKJE=位置VOORBEGING.indexOf(尺寸*尺寸);
ArrayList cloneLijst=(ArrayList)positiesvoorbewing.clone();
Meestre中心位置=向下(尺寸、位置、旋转或旋转、分度);
if(会议中心位置!=cloneLijst)
{
testPuzzelOpgelost(cloneLijst,会展中心);
}
}
左侧无效(阵列列表位置VO或WEBEING)
{
int INDEXLEGSTUKJE=位置VOORBEGING.indexOf(尺寸*尺寸);
ArrayList cloneLijst=(ArrayList)positiesvoorbewing.clone();
MeestRecentposities=bew.LEFT(尺寸、位置、旋转或旋转、Indexlegegstukje);
if(会议中心位置!=cloneLijst)
{
testPuzzelOpgelost(cloneLijst,会展中心);
}
}
右侧无效(阵列列表位置VOORBEWING)
{
int INDEXLEGSTUKJE=位置VOORBEGING.indexOf(尺寸*尺寸);
ArrayList cloneLijst=(ArrayList)positiesvoorbewing.clone();
meestRecentePosities=bew.RIGHT(尺寸、位置、旋转或旋转、Indexlegegstukje);
if(会议中心位置!=cloneLijst)
{
testPuzzelOpgelost(cloneLijst,会展中心);
}
}
}

这是错误代码

Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException
 at java.util.LinkedList.remove(LinkedList.java:788)
 at java.util.LinkedList.removeFirst(LinkedList.java:134)
 at java.util.LinkedList.remove(LinkedList.java:481)
 at Mozaiq.HintBerekenen2.berekenen(HintBerekenen2.java:56)
 at Mozaiq.HintBerekenen2.<init>(HintBerekenen2.java:39)
 at Mozaiq.Schuifpuzzelpaneel.HintUitvoeren(Schuifpuzzelpaneel.java:74)
 at Mozaiq.Gamepaneel.actionPerformed(Gamepaneel.java:126)
 at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
 at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
 at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
 at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
 at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
 at java.awt.Component.processMouseEvent(Component.java:6382)
线程“AWT-EventQueue-0”java.util.NoSuchElementException中的异常 位于java.util.LinkedList.remove(LinkedList.java:788) 位于java.util.LinkedList.removeFirst(LinkedList.java:134) 位于java.util.LinkedList.remove(LinkedList.java:481) 在Mozaiq.HintBerekenen2.berekenen(HintBerekenen2.java:56) 在Mozaiq.HintBerekenen2。(HintBerekenen2.java:39) 在Mozaiq.Schuifpuzzelpaneel.HintUitvoeren(Schuifpuzzelpaneel.java:74) 在Mozaiq.Gamepaneel.actionPerformed上(Gamepaneel.java:126) 在javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028) 位于javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351) 在javax.swing.DefaultButtonModel.fireActionPerformed上(DefaultButtonModel.java:387) 在javax.swing.DefaultButtonModel.setPressed中(DefaultButtonModel.java:242) 在javax.swing.plaf.basic.BasicButtonListener.mouseRelease(BasicButtonListener.java:236) 位于java.awt.Component.ProcessMouseeEvent(Component.java:6382) 试试看
Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException
 at java.util.LinkedList.remove(LinkedList.java:788)
 at java.util.LinkedList.removeFirst(LinkedList.java:134)
 at java.util.LinkedList.remove(LinkedList.java:481)
 at Mozaiq.HintBerekenen2.berekenen(HintBerekenen2.java:56)
 at Mozaiq.HintBerekenen2.<init>(HintBerekenen2.java:39)
 at Mozaiq.Schuifpuzzelpaneel.HintUitvoeren(Schuifpuzzelpaneel.java:74)
 at Mozaiq.Gamepaneel.actionPerformed(Gamepaneel.java:126)
 at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
 at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
 at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
 at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
 at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
 at java.awt.Component.processMouseEvent(Component.java:6382)