2010-07-25 162 views
1
package Algorithms; 
import cs1.Keyboard; 
import java.util.*; 

public class SieveofEratosthenes2 { 
    public static void main (String[] args){ 

     //input number and create an array with the length of (num-1) 
     int num = Keyboard.readInt(); 
     ArrayList prime = new ArrayList(num); 

     //populate array with all numbers from 2 to num 
     for(int i = 0; i < prime.size()-1; i++) 
     { 
      Integer temp = new Integer(i+2); 
      prime.add(i, temp); 
     } 
     System.out.println(prime.size()); 
+0

你會考慮使用'int []'而不是'ArrayList'嗎?我認爲這裏適合。 – 2010-07-25 00:24:29

回答

7

的這裏constructor不設置大小的ArrayList到num,它設置能力num

ArrayList prime = new ArrayList(num); 

ArrayList中的大小仍然是零,那麼你的循環身體從未運行。試試這個:

for (int i = 0; i < num - 1; i++) 
{ 
    Integer temp = new Integer(i+2); 
    prime.add(temp); 
} 

size定義:

在此列表中元素的個數。容量

定義:

每個ArrayList實例都有一個容量。容量是用於存儲列表中元素的數組大小。它總是至少與列表大小一樣大。隨着元素被添加到ArrayList,其容量會自動增長。增長政策的細節並未超出添加元素具有不變攤銷時間成本的事實。