【问题标题】:Array of Object of Arrays [duplicate]数组对象数组[重复]
【发布时间】:2020-03-28 12:55:30
【问题描述】:

基本上,我正在尝试创建一个对象数组,其中有两个数组,但是当我尝试填充这些对象时,我不断得到一个空指针,但是当我填充对象而不创建对象数组时似乎有效。

而且我不断得到--> 线程“主”java.lang.NullPointerException 中的异常

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class CardTrick{
    int[] combo;
    int[] cardTeller;

    public CardTrick() 
    {
        combo = new int[3];
        for (int j = 0; j < 3; j++) {
            combo[j] = 0;
        }
        cardTeller = new int[2];  
        for (int j = 0; j < 2; j++) {
            cardTeller[j] = 0;
        }   
    }

    public CardTrick(CardTrick c) { // notice the parameter is an object

        combo = new int[3];
        for (int j = 0; j < 3; j++) {
            combo[j] = 0;
        }
        cardTeller = new int[2];  
        for (int j = 0; j < 2; j++) {
            cardTeller[j] = 0;
        }   

    }
    public void whatCards(){
        int num = 0;
        CardTrick[] list = new CardTrick[56];

        list[0].combo[1] = 1;
        list[0].combo[2] = 1;
        list[0].cardTeller[0] = 1;
        list[0].cardTeller[1] = 1;

        System.out.println(list[0].combo[1]);

    }

    public static void main(String[] args){
        CardTrick ct = new CardTrick();
        ct.whatCards();
    } 
}

【问题讨论】:

  • 你也可以分享堆栈跟踪吗?
  • @flakes 我会尝试编辑它

标签: java arrays object


【解决方案1】:

问题出在这几行代码

CardTrick[] list = new CardTrick[56];

list[0].combo[1] = 1;

您创建了一个对象数组,但您的对象本身并未实例化,因此会抛出 NullPointerException

您必须在访问数组之前实例化每个单元格

CardTrick[] list = new CardTrick[56];
list[0] = new CardTrick();

list[0].combo[1] = 1;

【讨论】:

  • 完美的解释。别忘了你也可以使用Arrays.fill(list, new CardTrick())
  • @KnowNoTrend 这不是用完全相同的对象填充整个数组吗(在这种情况下,这很可能不是您想要的)?
  • @brimborium 他们不会随机化卡片。无论如何,它们都是一样的。
猜你喜欢
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2018-03-25
  • 2020-07-26
  • 1970-01-01
  • 2017-08-11
相关资源
最近更新 更多