问题描述
我试图让一个类从另一个类返回一个字符串,尽管我得到的返回是空的.我有一个 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.