[英]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.