java,无法在向量中添加元素(大小为0)

时间:2014-09-22 01:17:37

标签: java vector size

我有点失落,我没有编码好几个月,我无法弄清楚为什么大小返回0 ...我明确地在构造函数中添加了元素

package com.data;
import java.util.Date;
import java.util.Vector;
import com.vols.Vol;

public class InfosVols {

    public static Vector<Vol> listeVol = new Vector<Vol>();

    public InfosVols(){
        listeVol.addElement(new Vol(999999,"Montreal", "Toronto", false, new Date(), 9, 3));
        listeVol.addElement(new Vol(111,"Montreal", "Toronto", false, new Date(), 9, 3));
        listeVol.addElement(new Vol(112,"Montreal", "Toronto", false, new Date(), 10, 3));
        listeVol.addElement(new Vol(121,"Montreal", "Vancouveur", false, new Date(), 8, 5));
        listeVol.addElement(new Vol(131,"Montreal", "Calgary", false, new Date(), 14, 3));
        listeVol.addElement(new Vol(132,"Montreal", "Calgary", false, new Date(), 16, 3));
    }

    public static void main(String[] args) {
        System.out.println(listeVol.size());
    }
}

感谢

5 个答案:

答案 0 :(得分:5)

您永远不会致电InfosVols(或者更重要的是,创建InfosVols的新实例)

首先删除对listeVol的静态引用,然后构建InfosVols的新实例

InfosVols vols = new InfosVols();

然后尝试使用新创建的InfosVols实例(和实例字段)来打印Vector的大小

System.out.println(vols.listeVol.size());

我可能还应该指出Vector已被“弃用”,而支持collections API List界面。

答案 1 :(得分:1)

在InfosVols类的构造函数中添加元素。没有对构造函数的调用(即创建InfoVols的实例)。因此,向量中没有添加任何元素。

答案 2 :(得分:1)

您尚未调用添加元素的构造函数。 尝试在尺寸之前调用new:

new InfosVols();
System.out.println(listeVol.size());

目前还不是很清楚你想要实现什么,但这种设计很危险。每次对构造函数的新调用都会向静态(全局)变量listeVol添加更多元素。您可能不希望listeVol是静态的。

答案 3 :(得分:1)

这就是跑步

public static void main(String[] args) {
    System.out.println(listeVol.size());
}

在运行之前需要构建静态环境,因此按顺序这就是所有运行的内容

public static Vector<Vol> listeVol = new Vector<Vol>();

public static void main(String[] args) {
    System.out.println(listeVol.size());
}

这意味着您从未构建InfosVols并且从未调用此代码

public InfosVols(){
    listeVol.addElement(new Vol(999999,"Montreal", "Toronto", false, new Date(), 9, 3));
    listeVol.addElement(new Vol(111,"Montreal", "Toronto", false, new Date(), 9, 3));
    listeVol.addElement(new Vol(112,"Montreal", "Toronto", false, new Date(), 10, 3));
    listeVol.addElement(new Vol(121,"Montreal", "Vancouveur", false, new Date(), 8, 5));
    listeVol.addElement(new Vol(131,"Montreal", "Calgary", false, new Date(), 14, 3));
    listeVol.addElement(new Vol(132,"Montreal", "Calgary", false, new Date(), 16, 3));
}

如果你添加

new InfosVols();

进入已调用的部分,您将获得预期的结果。

答案 4 :(得分:0)

您永远不会调用构造函数,因此静态属性永远不会被初始化。另外,请不要使用Vector这是一个老课程,而是根据您的需要选择ArrayList(或其他List实施方案。)

我不确定您是否真的希望将此属性设置为静态,也不确定您是否真的希望在构造函数中初始化它。