我在这里找不到任何帮助,所以我只想问。
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;
}
这是一次类,然后我尝试通过这个在我的包中的另一个程序中的main方法中调用它:
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
我确信我错过了一些简单但却让我疯狂的事情。
答案 0 :(得分:13)
你的构造函数中有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;
}
答案 1 :(得分:3)
您正在处理变量,如果它们是实例变量,但是您已在构造函数内部声明它们。因此,一旦它超出了你在(构造函数)声明它们的范围,String
对象的值将为null,int和double变量的值将为0(因为它是默认值)
答案 2 :(得分:0)
我认为这就是你想要的课程定义:
public class Ride
{
String name;
int ticketsRequired;
double heightRequirement;
int numberOfRiders;
public Ride(String n, int tr, double hr , int nr){
name = n;
ticketsRequired = tr;
heightRequirement = hr;
numberOfRiders = nr;
}
public String toString(){
String info;
info = this.name + " Requiring " + this.ticketsRequired +
" tickets with a height restriction of " + this.heightRequirement;
return info;
}
}
编辑:修复了代码段中的小问题