Java字符串返回null

Java字符串返回null

本文介绍了Java字符串返回null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图让一个类从另一个类返回一个字符串,尽管我得到的返回值为null。我有一个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");
   }
}


推荐答案

In你有IceCream类构造函数:

In IceCream class constructor you have:

String flavour = getFlavour()

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

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

如果你想改变味道,请使用设定者。

And if you want change the flavour use the setter.

这篇关于Java字符串返回null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 23:48