写了个输入个数   输出素数的东西....可是Arraylist总是提示类型转换错误...
希望高手指点一下...实在无奈啊参考算法
prime numbers: 
Set the first element of a to the lowest prime number (2).
For each odd number, test, starting at 3:
    For each element, p, in a:
        Compute the remainder of test/p.
    If the remainder was non-zero for every p:
        Append test to a.
If the length of a equals n:
break程序
import java.util.*;
public class Prime{
    static int sum;
    public static void main(String []args){
      ArrayList<Integer> PrimeNumbers=new ArrayList<Integer>();
       PrimeNumbers.add(new Integer(2));//先将素数2加入
       Scanner in=new Scanner(System.in);
       System.out.println("Please input a number(n>0):");
       sum=in.nextInt();
       for(int test=3;;test+=2){
        for(int order=0,p=((Integer)(PrimeNumbers[order])).intValue();;order<PrimeNumbers.size();order++)
       
        if(test%p==0){
        PrimeNumbers.add(new Integer(test));
            break;
        }
        if(PrimeNumbers.size()==sum)
        break;
       }
       System.out.println(PrimeNumbers);
    }
}错误多多 大家指点!!!

解决方案 »

  1.   

    PrimeNumbers[order] == 是不是应该改成 : (Integer)PrimeNumbers.get(order)
      

  2.   

    try{ 
            BufferedReader in =new BufferedReader(new InputStreamReader(System.in)); 
            System.out.println("input a number:");
            sum=in.read(); 
            } 
    这样输入一个数字3  在debug中sum怎么=51啊???不解,求救!!!
      

  3.   


    import java.util.*;
    public class Prime{
        static int sum;
        public static void main(String []args){
          ArrayList PrimeNumbers=new ArrayList();
           PrimeNumbers.add(new String("2"));//先将素数2加入
           Scanner in=new Scanner(System.in);
           System.out.println((String)PrimeNumbers.get(0)+"Please input a number(n>0):");
           sum=in.nextInt();
           for(int test=3;;test+=2){
            for(int order=0,p=Integer.parseInt((String)PrimeNumbers.get(order));order<PrimeNumbers.size();order++)
           
            if(test%p==0){
            PrimeNumbers.add(new Integer(test));
                break;
            }
            if(PrimeNumbers.size()==sum)
            break;
           }
           System.out.println(PrimeNumbers);
        }
    }
    这样是不报错了 还是没有实现功能,lz what do you want