带有数组的java.lang.NullPointerException

带有数组的java.lang.NullPointerException,java,Java,嘿,节目中的名字是葡萄牙语的,但我认为这是可以理解的,如果你有任何疑问,只要问我,我会翻译 所以我得到了一个NullPointerException。数组向量在构造函数中初始化: public Box(int capacidade) { Time a = new Time(); Vector_Canais = new Canal[DEFAULT_SIZE]; } public static void novoCanal() { Scann

嘿,节目中的名字是葡萄牙语的,但我认为这是可以理解的,如果你有任何疑问,只要问我,我会翻译

所以我得到了一个
NullPointerException
。数组向量在构造函数中初始化:

public Box(int capacidade) {
        Time a = new Time();
        Vector_Canais = new Canal[DEFAULT_SIZE];
    }

public static void novoCanal() {
        Scanner in = new Scanner(System.in);

        Cnl = in.nextLine();
        Vector_Canais[i] = new Canal(Cnl);      
        i++;
    }

    public static String listaCanais(int i) {
        return (Vector_Canais[i].getCanal());
    }

public static void listaCanais() {
        for (int a = 0; a < 100; a++) {
            if (Box.listaCanais(a) != null) {
                System.out.println(Box.listaCanais(a));
            }
        }
public Box(intcapacidade){
时间a=新时间();
Vector_Canais=新运河[默认大小];
}
公共静态空隙率(){
扫描仪输入=新扫描仪(系统输入);
Cnl=in.nextLine();
Vector_Canais[i]=新运河(Cnl);
i++;
}
公共静态字符串listaCanais(int i){
返回(Vector_Canais[i].getCanal());
}
公共静态无效列表{
对于(int a=0;a<100;a++){
if(Box.listaCanais(a)!=null){
系统输出打印LN(列表框(a));
}
}
i初始化为0。
有什么想法吗?

您还没有显示在哪里初始化了
Vector\u Canais
——我猜您没有初始化它

试试这个:

static private Vector_Canais Canal[] = new Canal[100]; // for example

您还没有显示在哪里初始化了
Vector\u Canais
——我猜您没有初始化它

试试这个:

static private Vector_Canais Canal[] = new Canal[100]; // for example


很可能您尚未初始化数组
Vector\u Canais
,或者尚未初始化其所有成员(例如,
novoCanal
以前从未被调用过100次)。请记住,创建一个大小为100的数组(一个类)表示创建一个由100个
null
插槽组成的数组,而不是100个对象。除非为每个对象调用构造函数,否则它们可能会抛出此值。

最可能您尚未初始化数组
Vector\u Canais
或尚未初始化其所有成员(例如,
novoCanal
以前没有调用100次).记住,制作一个大小为100的数组(一个类)这意味着创建一个包含100个
null
插槽的数组,而不是100个对象。在您为每个插槽调用构造函数之前,它们可能会抛出此数组。

请复制/粘贴异常中的堆栈跟踪,并向我们显示导致异常的代码行。同时显示初始化
Vector\u Canais
的代码。它是
Vector\u Canais
类或者变量名?最好发布所有代码。发布的内容没有任何意义。例如,
Time a=new Time()
什么都不做-a的范围是方法,而您不使用它,那么为什么要定义它?在哪一行出现异常?请复制/粘贴异常的堆栈跟踪,并向我们显示代码中导致异常的行。还显示初始化
Vector\u Canais
的代码。
Vector\u Canais
是类还是类变量名?最好发布所有代码。发布的内容没有任何意义。例如,
timea=newtime()
什么都不做-
a
的范围是方法,你不使用它,那么为什么要定义它?在哪一行出现异常?Java约定!变量名以小写开头;)@m0skit0来吧……这家伙正在处理命名约定。我只是想让他在cas中使用尽可能少的信息很抱歉我在这里:
publicbox(intcapacidade){timea=newtime();Vector_Canais=newcanal[DEFAULT_SIZE];}
“编辑”你的问题并添加你需要的代码到那里,而不是在这里的评论中Java conventions!变量名以小写字母开头;@m0skit0来吧…这家伙正在处理命名约定。我只是想让他尽可能少地使用信息,以防它炸了他的脑袋对不起,我在这里:
public Box(int capacidade){Time a=new Time();Vector_Canais=new Canal[DEFAULT_SIZE];}
“编辑”你的问题,加上你需要什么代码,而不是在这里,这是我的问题。谢谢!很高兴能帮助你。如果这真的是你的问题的解决方案,请考虑将答案标记为正确。后续问题:如果我不想/不能同时做所有的99个频道,我怎么做?可以将空检查修改为如下所示:
if(Vector_Canais[a]!=null&&Box.listaCanais(a)!=null)
这样,在循环之前,您不必全部初始化它们,但循环会忽略那些尚未初始化的。谢谢,我制作了一个计数器,并将循环与计数器进行比较,这样它只会扫描创建的通道。我认为这是我的问题。谢谢!很高兴能提供帮助。如果这真的是解决您问题的方法,p请考虑将答案标记为正确。后续问题:如果我不想/不能同时做所有的99个通道,我怎么做呢?在这种情况下,你可以修改你的空校验看起来像这样:<代码>如果(VECRTORICANIS[A]!= NULL&&BOS.ListAcaNIS(A)!=空)通过这种方式,您不必在循环之前对所有通道进行初始化,但循环会忽略那些尚未初始化的通道。谢谢,我制作了一个计数器,并将循环与计数器进行了比较,因此它只会扫描创建的通道。