【问题标题】:Runtime error which stems from add() method (when trying to override)源于 add() 方法的运行时错误(尝试覆盖时)
【发布时间】:2014-05-25 03:51:22
【问题描述】:

所有这些类都编译得很好,但是当我尝试运行我的测试器类时,它返回了这个错误:

java.lang.NullPointerException:

java.lang.NullPointerException

在 Bin.add(Bin.java:23)

在 BinTest.main(BinTest.java:11)

以下是课程:

public class BinItem
{
    private String mySKU;
    private int myQuantity;

    public BinItem( String sku, int quantity )
    {
        mySKU = sku;
        myQuantity = quantity;
    }

    public String getSKU()
    {
        return mySKU;
    }

    public int getQuantity()
    {
        return myQuantity;
    }

    public String toString()
    {
        // Write code here to return a string using
        // the format: “SKU <sku>: <quantity>”. For
        // example: “SKU 12345-15: 4320”.
        return "SKU <" + getSKU() + ">: <" + getQuantity() + ">";
    }
}

import java.util.*;
public class Bin
{
    private String myName;
    private ArrayList<BinItem> myContents;
    public Bin( String name )
    {
        myName = name;
    }

    public String getName()
    {
        return myName;
    }

    public ArrayList<BinItem> getContents()
    {
        return myContents;
    }

    public void add( BinItem b )
    {
        myContents.add(b);
    }

    public String toString()
    {
        String s = "Bin " + myName + ":\n";
        for ( BinItem b : myContents )
        {
            s += b + "\n";
        }
        return s;
    }
} 

import java.util.*;
public class BinTest
{
    public static void main( String[] args )
    {
        ArrayList<Bin> warehouse = new ArrayList<Bin>();
        Bin a = new Bin("A");
        Bin b = new Bin("B");
        warehouse.add( a );
        warehouse.add( b );
        a.add( new BinItem("1234-0", 500 ) );
        a.add( new BinItem("1234-1", 25 ) );
        a.add( new BinItem("1234-2", 7720 ) );
        b.add( new BinItem("1234-3", 1000 ) );
        for ( Bin bn : warehouse )
        {
            System.out.println( bn );
        }
    }
}

【问题讨论】:

  • 很明显,我的 add() 方法存在问题,但我无法终生弄清楚它是什么。任何帮助将不胜感激,谢谢!

标签: java class methods arraylist overriding


【解决方案1】:

你还没有初始化myContents ArrayList。使用前必须先初始化

private ArrayList<BinItem> myContents = new ArrayList<BinItem>();

【讨论】:

  • 天哪,我很笨。谢谢大家,我什至没有注意到。
  • @alx 不客气 :) 请接受答案以结束您的问题。
【解决方案2】:

你从未初始化过我的内容。使用这个

public Bin( String name )
    {
        myContents = new ArrayList<BinItem>();
        myName = name;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-17
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 2020-01-21
    • 2023-03-10
    相关资源
    最近更新 更多