簡體   English   中英

為什么我收到錯誤 this.variable is null in java class

[英]Why I am getting error this.variable is null in java class

我正在嘗試在 java 中編寫一個小代碼。 我從方法 getTotalCost() 中得到錯誤。 你能檢查我的代碼並指出我在做什么錯誤。

我正在創建一個 class 漢堡包。 將3個變量傳遞給constructor。 然后我選擇在我的漢堡中加入番茄或菠菜。 在我的 getTotalCost() 中,我試圖打印 myLettuce 的值。

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "com.amitsuneja.Lettuce.getCostOfLettuce()" because "this.myLettuce" is null at com.amitsuneja.Hamburger.getTotalCost(Hamburger.java:77) at com.amitsuneja.Main.main(Main.java:8)

這是我的漢堡包。java

public class Hamburger {

private String breadType;
private boolean isMeat;
private double priceOfBurger;
private Lettuce myLettuce;
private boolean addLettuce;
private Tomato myTomato;
private boolean addTomato;
private Carrot myCarrot;
private boolean addCarrot;
private Spinach mySpinach;
private boolean addSpinach;
private double toalCost;

Scanner myScanner = new Scanner(System.in);


public Hamburger(String breadType, boolean isMeat, double priceOfBurger) {
    this.breadType = breadType;
    this.isMeat = isMeat;
    this.priceOfBurger = priceOfBurger;
    System.out.println("Current cost of burger is: " + this.priceOfBurger);

    System.out.println(" Would like to add some Lettuce?");
    addLettuce = myScanner.nextBoolean();
    if (addLettuce){
        Lettuce myLettuce1 = new Lettuce(true);
    }else{
        Lettuce myLettuce1 = new Lettuce(false);
        System.out.println("I am in Lettuce: " + myLettuce.getCostOfLettuce() + myLettuce.isHaveLettuce());
    }
    myScanner.nextLine();

    System.out.println(" Would like to add some Tomato?");
    addTomato = myScanner.nextBoolean();
    if (addTomato){
        Tomato myTomato = new Tomato(true);
        }else{
        Tomato myTomato = new Tomato(false);
    }
    myScanner.nextLine();

    System.out.println(" Would like to add some carrot?");
    addCarrot = myScanner.nextBoolean();
    if (addCarrot){
        Carrot myCarrot = new Carrot(true);
    }else{
        Carrot myCarrot = new Carrot(false);
    }
    myScanner.nextLine();

    System.out.println(" Would like to add some Spinach?");
    addSpinach = myScanner.nextBoolean();
    if (addSpinach){
        Spinach mySpinach = new Spinach(true);
    }else{
        Spinach mySpinach = new Spinach(false);
    }
    myScanner.nextLine();
    myScanner.close();

}

public double getPriceOfBurger() {
    return priceOfBurger;
}

public void getTotalCost(){
    System.out.println("I am Here....................price = " + priceOfBurger);
    System.out.println("I am in Lettuce: " + myLettuce.getCostOfLettuce() + myLettuce.isHaveLettuce());


}

這是我的生菜 Class package com.amitsuneja;

公共 class 生菜 {

private boolean haveLettuce;
private double costOfLettuce;

public Lettuce(boolean haveLettuce) {
    this.haveLettuce = haveLettuce;
    this.costOfLettuce =2d;
}


public boolean isHaveLettuce() {
    return haveLettuce;
}

public void setHaveLettuce(boolean haveLettuce) {
    this.haveLettuce = haveLettuce;
}

public double getCostOfLettuce() {
    return costOfLettuce;
}

public void setCostOfLettuce(double costOfLettuce) {
    this.costOfLettuce = costOfLettuce;
}

}

更改此代碼

 if (addLettuce){
        Lettuce myLettuce1 = new Lettuce(true);
    }else{
        Lettuce myLettuce1 = new Lettuce(false);
        System.out.println("I am in Lettuce: " + myLettuce.getCostOfLettuce() + myLettuce.isHaveLettuce());
    }

至 -

if (addLettuce){
            myLettuce = new Lettuce(true);
}else{
            myLettuce = new Lettuce(false);
            System.out.println("I am in Lettuce: " + myLettuce.getCostOfLettuce() + myLettuce.isHaveLettuce());
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM