java - toString 方法打印空变量,无法理解为什么(Java)

标签 java tostring

我在这里找不到任何帮助,所以我只想问问。

public  Ride(String n, int tr, double hr , int nr){
    String name = n;
    int ticketsRequired = tr;
    double heightRequirement = hr;
    int numberOfRiders = nr;
}

public String toString(){

    String info;

    info = this.name + " Requiring " + this.ticketsRequired + 
            " tickets with a height restriction of " +       heightRequirement;

    return info;
}

那是在一个类中,然后我尝试通过这个在我的包中的另一个程序的主要方法中调用它:

r1 = new Ride("Death run",0, 5.2, 5);
System.out.println( r1.toString());

哪个会返回这个

null Requiring 0 tickets with a height restriction of 0.0

我确信我遗漏了一些简单的东西,但这让我发疯了。

最佳答案

你是 shadowing构造函数中的实例变量:

public Ride(String n, int tr, double hr , int nr){
    name = n;
    ticketsRequired = tr;
    heightRequirement = hr;
    numberOfRiders = nr;
}

此处不需要在构造函数中将 this 与字段一起使用,但这是一个很好的做法,因为它们通常被构造函数的参数遮蔽(参见 using the this keyword )。

这是一个使用 this 关键字的版本:

public Ride(String n, int tr, double hr , int nr){
    this.name = n;
    this.ticketsRequired = tr;
    this.heightRequirement = hr;
    this.numberOfRiders = nr;
}

关于java - toString 方法打印空变量,无法理解为什么(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21262250/

相关文章:

java - 为什么函数参数不调用toString?

c# - 自定义类的 IEnumerable 和 String.Join()

java - 如何解析字符串中的日期并设置为新格式

java - 具有相同名称的私有(private)回调方法

java - 从Mysql获取数据时出现字符问题

Android + 字符串

LinkedList输出null的Java实现

c# - 空字符串上的 ToString

java - Java 中的 HDF5 : What are the difference between the availabe APIs?

java - 如何在不转向 boolean 开关参数的情况下避免代码重复?