Java 字符串返回为 null

2022-01-19 00:00:00 string return null methods java

我试图让一个类从另一个类返回一个字符串,尽管我得到的返回是空的.我有一个 set 方法可以在原始类中设置字符串,但是在我的第二个类中调用该方法时,我得到了 null 的返回.

I am attempting to get one class to return a string from another class, though the return I get is null. I have a set method that works in setting the string in the original class, but when calling the method in my second class, I get a return of null.

这是第一堂课;

public class IceCream
{
    // instance variables - replace the example below with your own
    private String flavour;
    public static double price;


    /**
     * Constructor for objects of class IceCream
     */
    public IceCream()
    {
        // initialise instance variables
        String flavour = getFlavour();
        price = 0.50;

    }

    /**
     * Gets price in pence.
     * 
     * 
     * @returns the price of the ice cream.
     */
    public static double getPrice()
    {
        // put your code here
        return price;
    }

    public int getScoops()
    {
        return scoop;
    }

public void setPrice(int newPrice)
{
    price = newPrice;
}

public void setScoops(int scoopNumber)
{
    scoop = scoopNumber;
}

public double totalCost()
{
    double cost;
    cost = scoop * price;
    return cost;

}

public String getFlavour()
{
  return flavour; 
}

public void setFlavour(String whatFlavour)
{
    flavour = whatFlavour;
}

}

第二个类,我试图在 sundaeDetails 方法的 println 中调用我在 setFlavour 方法中输入的字符串.

And the second class, in which I am trying to call the string I input in the setFlavour method in the println of the sundaeDetails method.

import java.util.ArrayList;
/**
 * Write a description of class Sundae here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Sundae
{
    // instance variables - replace the example below with your own
    private IceCream flavour;
    private Topping SundaeTopping;
    private int scoops;


    /**
     * Constructor for objects of class Sundae
     */
    public Sundae()
   {
     flavour = new IceCream();
     SundaeTopping = new Topping();
     scoops = 0;
   }
   /**
    * Set scoop number.
    */

    public void setScoops(int scoopNumber)
   {
    scoops = scoopNumber;
   }
   /**
    * Return scoop variable.
    */
   public int getScoops()
   {
       return scoops;
   }
   /**
    * Get the price of the sundae.
    */ 
   public void getPrice()
   {
        double cost;
        double scoopPrice = scoops * IceCream.getPrice();
        if ( scoops > 0) {
            cost = scoopPrice * Topping.getToppingPrice();
            System.out.println("Cost of Sundae: " + cost);
         }
        else {
        System.out.println("Need to have a scoop of ice cream in your Sundae.");
    }
    }

    /**
     * Return the details of the sundae; price, flavour, scoops etc.
     */
   public void sundaeDetails()
   {
       System.out.println("You have " + scoops + " scoops of " + flavour.getFlavour() + "ice cream");
   }
}

推荐答案

在 IceCream 类的构造函数中你有:

In IceCream class constructor you have:

String flavour = getFlavour()

您创建了一个局部变量,而不是对实例属性的引用.getFlavour() 方法返回您从未设置的属性实例,因此它为空.你应该在构造函数中有这样的东西:

You have created a local variable instead a reference to a instance property. getFlavour() method return the property instance that you never set, so its null. You should have something like this in the constructor:

this.flavour = "default value";

或者在构造函数头部设置一个flavor参数:

Or set a flavour parameter on constructor header:

public IceCream(String flavour) {
    this.flavour = flavour;
    (...)
}

然后这样称呼它:

IceCream chocolat = new IceCream(" chocolat");

如果你想改变风格,请使用 setter.

And if you want change the flavour use the setter.

相关文章