2010-07-25 3 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'? Думаю, это будет уместно. –

ответ

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, его емкость растет автоматически. Детали политики роста не указаны за пределами того факта, что добавление элемента имеет постоянную амортизированную временную стоимость.

Смежные вопросы