------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
刚接触这个程序时自学java不久,听得一头雾水.
现在总结了这个程序里的主要的知识点:
要想实现把现实中的具体人物在程序中删除时,只要在程序中不要把任何引用指向这个程序中的对象即可,java自带的垃圾回收机制会把这个对象
在内存中占用的空间回收清空掉。
还有就是创建一个对象时,可以创建含有两个指针的对象,用以模拟现实围着一圈的人。
代码如
</pre><pre name="code" class="java">
//丢手绢
package 第一个工程;
public class Hello {
public static void main(String[] args) {
CycleLink cycleLink1=new CycleLink ();
cycleLink1.setlen(5);
cycleLink1.creatlink();
cycleLink1.show();
cycleLink1.getk(2);
cycleLink1.getm(2);
cycleLink1.play();
}
}
class Child
{
int number;
public Child(int number)
{
this.number=number;
}
Child nextChild=null;
}
class CycleLink
{
Child firstChild=null;
Child paotui=null;
Child paotui2=null;
int len;
int k;
int m;
public void setlen(int len)
{
this.len=len;
}
public void getk(int k)
{
this.k=k;
}
public void getm(int m)
{
this.m=m;
}
//初始化链表
public void creatlink()
{
for(int i=1;i<=len;i++)
{
if(i==1)
{
Child ch=new Child(i);
this.firstChild=ch;
this.paotui=ch;
}else{
if(i==len){
Child ch=new Child(i);
paotui.nextChild=ch;
paotui=ch;
paotui.nextChild=firstChild;
}else{
Child ch=new Child(i);
paotui.nextChild=ch;
paotui=ch;
}
}
}
}
//开始游戏
public void play()
{
paotui=firstChild;
for(int i=1;i<k;i++)
{
paotui=paotui.nextChild;
}
while(len!=1)
{
for(int j=1;j<m;j++)
{
paotui=paotui.nextChild;
}
paotui2=paotui;
while(paotui2.nextChild!=paotui){
paotui2=paotui2.nextChild;
}
paotui2.nextChild=paotui.nextChild;
paotui=paotui.nextChild;
this.len--;
}
System.out.println("最后一个出局的是:"+paotui.number);
}
public void show()
{
paotui=this.firstChild;
do {
System.out.println(paotui.number);
paotui=paotui.nextChild;
}while(paotui!=this.firstChild);
}
}