java字符串 null,Java字符串返回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.

Here is the first class;

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;

}

}

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");

}

}

解决方案

In IceCream class constructor you have:

String flavour = 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";

Or set a flavour parameter on constructor header:

public IceCream(String flavour) {

this.flavour = flavour;

(...)

}

And call it like:

IceCream chocolat = new IceCream(" chocolat");

And if you want change the flavour use the setter.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值