既然要用到踢人,我想首先范围应该是application,,管理员点踢人之后,给application设置个属性,增加一个list,把客户的id添进去,客户端页面有一个一直读取这个list的方法(自动刷新),如果其中有自己的id,就跳转到另一个页面,然后注销session,把自己名字从那个list中消除(为下次登陆).
目前创新互联建站已为成百上千家的企业提供了网站建设、域名、网络空间、网站运营、企业网站设计、凭祥网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
这个就是服务器的一个接口,调用服务器的一个踢人的方法,服务器把此人从聊天列表中删除了就好了
这个讲得麻烦,其实只是求循环顺序为9 的倍数的位置 。剩余的就是地球人的位置。
代码待会儿试着写个看看。
被扔出的位置已经算出来了。
第1轮抛出:位置:09
第2轮抛出:位置:18
第3轮抛出:位置:27
第4轮抛出:位置:06
第5轮抛出:位置:16
第6轮抛出:位置:26
第7轮抛出:位置:07
第8轮抛出:位置:19
第9轮抛出:位置:30
第10轮抛出:位置:12
第11轮抛出:位置:24
第12轮抛出:位置:08
第13轮抛出:位置:22
第14轮抛出:位置:05
第15轮抛出:位置:23
整下整个的代码。
import java.util.ArrayList;
import java.util.List;
public class CirclePlus {
private ListString seats = new ArrayListString();
//初始化
public CirclePlus(){
if(seats.size()=0){
for(int i=0;i30;i++){
seats.add("位置:"+((i+1)=10?(i+1):"0"+(i+1)));
}
}
}
//踢人方法
public void Kick(int num){
//记录当前被踢人的座位
int tempseat = 0;
//当前要踢的座位
int nowseat = 0;
//记录当前是第几轮
int loop = 1;
//当是15轮时退出
while(loop=15){
//要踢的人的座位号是上次被踢的座位号+num,-1是因为LIST的编号比真实座位号小1
nowseat = tempseat+num-1;
// System.out.println("nowseat=="+nowseat+"\ntempseat=="+tempseat+"\nloop=="+loop);
//如果要踢的超出当前人数范围,则从第一个人开始重新算起(减掉当前人数)
if(nowseat=seats.size()){
//为符合上面踢人座位号(nowseat)计算,除去减掉当前人数(seats.size())外,要加回修正值(上面减掉的1),
//以保证 要踢人的座位号(nowseat) 是正确的
tempseat=nowseat-seats.size()-num+1;
}else{
//踢人
System.out.println("第"+loop+"轮抛出:"+seats.remove(nowseat));
//保存当前被踢的座位号
tempseat = nowseat;
//轮次增加
loop++;
}
}
System.out.println("踢人后剩余的安全座位号:");
for(String string: seats){
System.out.println(string);
}
}
public static void main(String[] args) {
CirclePlus cp = new CirclePlus();
cp.Kick(9);
}
}
OK了,换成while循环才弄好。。用for循环直接算座位号误差太大了,还是一个个算。