почему этот код выводит "0"? - PullRequest
1 голос
/ 25 июля 2010
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());

1 Ответ

7 голосов
/ 25 июля 2010

Конструктор здесь не устанавливает размер 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);
}

Определение Размер :

количество элементов в этом списке.

Определение вместимости:

Каждый экземпляр ArrayList имеет емкость. Емкость - это размер массива, используемого для хранения элементов в списке. Это всегда как минимум размер списка. Когда элементы добавляются в ArrayList, его емкость увеличивается автоматически. Детали политики роста не указаны за исключением того факта, что добавление элемента имеет постоянные амортизированные временные затраты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...