日期:2014-05-20  浏览次数:20807 次

关于java的小计算题
从1数到9,数到5就把5去掉,接着数,再数到5就在去掉,最后只剩下一个数,那个数是什么?谁知道这个例子怎么写啊,我写了 一个循环到剩下3个,帮我看看我的错误,或是帮我写个小例子,万分感谢!!下面是我的代码 
class er 

public static void main(String[] args) 

StringBuffer x=new StringBuffer("123456789"); 
int index = 0; 
for(int i=0;i <=x.length();i++) 

index++; 
if(index==x.length()) 
index = 0; 
if(i==4) 

x.delete(index-1,index); 
i=0; 
System.out.println(x); 





}

------解决方案--------------------
剩下3个的时候,x.length()无论如何都出现不了(i==4) 
所以无法继续下去
------解决方案--------------------
Java code

import java.util.*;
public class Room  
{ 
public static void main(String args[]) 
 { 
    ArrayList list = new ArrayList();
    for(int i=1;i<10;i++)
     {
        list.add(i+"");
     }
        int j=1;int k=0;
    while(list.size()>1)
     {
            
            if(k>=list.size())
            {
                k=0;
            }
            if(j==5)
            {
                System.out.print(list.get(k)+"-");
                list.remove(k);
                j=0;
                k--;
            }
            j++;
            k++;
    }
    System.out.println(list.get(0));
 } 

 
}

------解决方案--------------------
3楼为什么不用generic以及用list声明
------解决方案--------------------
没明白意思!
------解决方案--------------------
约瑟夫环问题,以前有一个帖子,问题是:
100人围成一个圈,随机挑出一个开始报数1,他的下一位(顺、逆时针无所谓)接着报下一个数字,报到7的人出圈子,圈子缩小,而刚出去人的下一位又从1开始报数,如此循环,求最后剩下的那个人。

扩展:人数由用户输入,求幸存者。

写过类实现了,后面的朋友用字符串截取也实现了,效率更高。不过貌似这个帖子找不到了。
------解决方案--------------------
请问这是不是约瑟夫环的问题阿,我以前用c++写过的,用循环链表怎么样,情楼上的朋友指点下我的思路
------解决方案--------------------
四楼才是正道
------解决方案--------------------
mark
------解决方案--------------------
package src;

import java.util.*;

public class MathTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
Vector<Integer> array = new Vector<Integer>();
int i = 0,flag =1,index = 0;
for(i=1;i<=9;i++){
array.add(new Integer(i));
}
System.out.println(array.size());
Enumeration e = array.elements();
while(e.hasMoreElements()){
System.out.println(e.nextElement());
}

while(true){
if(array.size()==1){
break;
}
else{
if(array.size()>1 && flag%5 == 0){
System.out.println("数据"+array.elementAt(index)+"被删除");
array.remove(index);
index--;
}
flag++;
index = (index+1)%array.size();
}

}

System.out.println("结果为:"+array.firstElement());
}

}

------解决方案--------------------
顶一下!多看贴子总是有用的、
------解决方案--------------------
学习一下 顶
------解决方案--------------------
3楼的我想得到最后一个数怎么写啊, 
if(j==5) 

System.out.print(list.get(k)+"-");