如何修复代码中的java.lang.NullPointerException:null?

如何修复代码中的java.lang.NullPointerException:null?,java,nullpointerexception,Java,Nullpointerexception,我的老师让我们创建一个名为Pizza的类,该类存储关于单个Pizza的信息,该类应包含: 私有实例变量,用于存储比萨饼的大小(小、中或大)、奶酪、意大利香肠和火腿配料的数量 设置所有实例变量的构造函数 获取和设置实例变量的公共方法 一个公共方法名calcCost(),它返回一个double,即比萨饼的成本 比萨饼的价格是由大小决定的。小=10美元+每个浇头2美元。中等=12美元+每个浇头2美元。大=14美元+每个顶部2美元 一个名为getDescription()的公共方法,返回一个字符串

我的老师让我们创建一个名为Pizza的类,该类存储关于单个Pizza的信息,该类应包含:

  • 私有实例变量,用于存储比萨饼的大小(小、中或大)、奶酪、意大利香肠和火腿配料的数量

  • 设置所有实例变量的构造函数

  • 获取和设置实例变量的公共方法

  • 一个公共方法名calcCost(),它返回一个double,即比萨饼的成本

比萨饼的价格是由大小决定的。小=10美元+每个浇头2美元。中等=12美元+每个浇头2美元。大=14美元+每个顶部2美元

  • 一个名为getDescription()的公共方法,返回一个字符串,其中包含比萨饼大小、每种成本的数量以及由calcCost()计算的比萨饼成本
这是我的班级:

public class Pizza
{
     private String pizzaSize;
     private int numOfCheese;
     private int numOfPepperoni;
     private int numOfHam;

public Pizza (String a, int b, int c, int d)
{
    a = pizzaSize;
    b = numOfCheese;
    c = numOfPepperoni;
    d = numOfHam;
}

public String getSize()
{return pizzaSize;}

public int getCheese()
{return numOfCheese;}

public int getPepperoni()
{return numOfPepperoni;}

public int getHam()
{return numOfHam;}

public String getDescription()
{
    return ("Size: " + pizzaSize + "," + "\t" + "Cheese Toppings: " + numOfCheese + 
        "\t" + "Pepperoni Toppings: " + numOfPepperoni + "\t" + "Ham Toppings: " + 
        numOfHam + "\t");
}

public double calcCost()
{
    double cost = 0.0;
    int numOfToppings;
    int costOfToppings;
    if (pizzaSize.equals("Small"))
    {cost = 10.0;}
    else if (pizzaSize.equals("Medium"))
    {cost = 12.0;}
    else if (pizzaSize.equals("Large"))
    {cost = 14.0;}

    numOfToppings = ( (numOfCheese + numOfPepperoni) + numOfHam);
    costOfToppings = (numOfToppings * 2);
    cost += numOfToppings;
    return cost;
    }
}
以下是随附的演示驱动程序:

    public class Question11
{
    public static void main(String[] args)
    {
        // Create a few sample pizzas and output their prices
        Pizza supreme = new Pizza ("Large",1,2,1);
        Pizza cheese = new Pizza ("Medium",2,0,0);
        Pizza pepperoni = new Pizza ("Small",0,0,2);
        System.out.printf( "%-75sCost: $%5.2f %n",     supreme.getDescription(), supreme.calcCost() );
        System.out.printf( "%-75sCost: $%5.2f %n", cheese.getDescription(), cheese.calcCost() );
        System.out.printf( "%-75sCost: $%5.2f %n", pepperoni.getDescription(), pepperoni.calcCost() );
    }
 } // Question 11
驱动程序的size.equals部分和supreme.calcCost()出现java.lang.NullPointerException:null错误。非常感谢您的帮助,是的,我在这个网站上阅读了其他java.lang.NullPointerException论坛/问题,我仍然感到困惑

public Pizza (String a, int b, int c, int d) {
    pizzaSize = a;       // assigns a value to pizzaSize
    numOfCheese = b;
    numOfPepperoni = c;
    numOfHam = d;
}

更改你的
Pizza
构造函数。

你的构造函数向后,你是从方法而不是类字段中赋值变量:

public Pizza (String a, int b, int c, int d)
{
    a = pizzaSize;
    b = numOfCheese;
    c = numOfPepperoni;
    d = numOfHam;
}
应该是:

public Pizza (String a, int b, int c, int d)
{
    pizzaSize = a;
    numOfCheese = b;
    numOfPepperoni = c;
    numOfHam = d;
}

我还建议给它起一个比a、b、c、d更有意义的名字

@Simze不可能,也不可能。但我们还是试着解决它:-)你的构造函数的赋值是反向的。我真的把最简单的部分搞糟了吗?!?非常感谢。我真不敢相信事情竟如此简单。哈哈,我试了两个小时,就是这样。啊。