【问题标题】:why does this code output "0"?为什么这段代码输出“0”?
【发布时间】:2010-07-25 00:00:04
【问题描述】:
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());

【问题讨论】:

  • 您会考虑使用int[] 代替ArrayList 吗?我觉得这里比较合适。

标签: java arraylist


【解决方案1】:

这里的constructor并没有将ArrayList的size设置为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,它的容量会自动增长。除了添加元素具有恒定的摊销时间成本这一事实之外,没有指定增长策略的细节。

【讨论】:

    猜你喜欢
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 2021-12-15
    • 1970-01-01
    相关资源
    最近更新 更多