如何正确调用返回引用类型的方法?
How to invoke method returning reference type properly?
我正在阅读有关返回引用类型结果的方法的 Oracle Java 教程,但被卡住了好几个小时。这里提供link。
https://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html
public class Bicycle {
private int speed = 0;
public Bicycle(int a) {
speed = a;
}
public static Bicycle seeWhosFastest (Bicycle bicycle1, Bicycle bicycle2) {
Bicycle fastest = bicycle1;
if (bicycle1.speed < bicycle2.speed) {
fastest = bicycle2;
}
return fastest;
}
public static void main(String[] args) {
Bicycle firstBicycle = new Bicycle(100);
Bicycle secondBicycle = new Bicycle(200);
Bicycle.seeWhosFastest(firstBicycle, secondBicycle);
}
}
但是,我无法让它按预期工作。我希望至少打印出 bicycle2
对象,但没有显示。
你们能帮帮我吗在此先谢谢了。
你没有打印任何东西;您所做的只是机械地计算哪个 Bicycle
实体最快的结果。
为了查看结果,您需要做两件事:
- 用
System.out.println
调用包裹 Bicycle.seeWhosFastest(firstBicycle, secondBicycle)
行,
- 在
Bicycle
中实施 toString
,这样您就不会得到无用的信息。
toString
方法很简单:
@Override
public String toString() {
return "Bicycle, with speed " + speed;
}
考虑到您的静态 seeWhosFastest 方法 returns 您可以编写一个 Bicycle 引用类型:
public static void main(String[] args) {
Bicycle firstBicycle = new Bicycle(100);
Bicycle secondBicycle = new Bicycle(200);
Bicycle fastestBike = Bicycle.seeWhosFastest(firstBicycle,
secondBicycle);
System.out.println(fastestBike);
}
为了打印一些重要的东西,你需要用类似于@Makato 的例子
的东西覆盖你的 Bicycle class 的 toString 方法
根据您的评论进行编辑:
首先向你的 Bicycle 添加第二个成员变量 class 类似于:
private String reference;
然后添加一个 toString 方法(也在你的 Bicycle class)
public String toString() {
return reference;
}
现在将您的自行车构造器更新为
public Bicycle(int speed, String reference) {
this.speed = speed;
this.reference = reference;
}
现在改变你的主要方法如下:
public static void main(String[] args) {
Bicycle firstBicycle = new Bicycle(100, "Bicycle1");
Bicycle secondBicycle = new Bicycle(200, "Bicycle2");
Bicycle fastestBike = Bicycle.seeWhosFastest(firstBicycle,
secondBicycle);
System.out.println(fastestBike);
}
它应该按预期工作
希望对您有所帮助
我正在阅读有关返回引用类型结果的方法的 Oracle Java 教程,但被卡住了好几个小时。这里提供link。
https://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html
public class Bicycle {
private int speed = 0;
public Bicycle(int a) {
speed = a;
}
public static Bicycle seeWhosFastest (Bicycle bicycle1, Bicycle bicycle2) {
Bicycle fastest = bicycle1;
if (bicycle1.speed < bicycle2.speed) {
fastest = bicycle2;
}
return fastest;
}
public static void main(String[] args) {
Bicycle firstBicycle = new Bicycle(100);
Bicycle secondBicycle = new Bicycle(200);
Bicycle.seeWhosFastest(firstBicycle, secondBicycle);
}
}
但是,我无法让它按预期工作。我希望至少打印出 bicycle2
对象,但没有显示。
你们能帮帮我吗在此先谢谢了。
你没有打印任何东西;您所做的只是机械地计算哪个 Bicycle
实体最快的结果。
为了查看结果,您需要做两件事:
- 用
System.out.println
调用包裹Bicycle.seeWhosFastest(firstBicycle, secondBicycle)
行, - 在
Bicycle
中实施toString
,这样您就不会得到无用的信息。
toString
方法很简单:
@Override
public String toString() {
return "Bicycle, with speed " + speed;
}
考虑到您的静态 seeWhosFastest 方法 returns 您可以编写一个 Bicycle 引用类型:
public static void main(String[] args) {
Bicycle firstBicycle = new Bicycle(100);
Bicycle secondBicycle = new Bicycle(200);
Bicycle fastestBike = Bicycle.seeWhosFastest(firstBicycle,
secondBicycle);
System.out.println(fastestBike);
}
为了打印一些重要的东西,你需要用类似于@Makato 的例子
的东西覆盖你的 Bicycle class 的 toString 方法根据您的评论进行编辑:
首先向你的 Bicycle 添加第二个成员变量 class 类似于:
private String reference;
然后添加一个 toString 方法(也在你的 Bicycle class)
public String toString() {
return reference;
}
现在将您的自行车构造器更新为
public Bicycle(int speed, String reference) {
this.speed = speed;
this.reference = reference;
}
现在改变你的主要方法如下:
public static void main(String[] args) {
Bicycle firstBicycle = new Bicycle(100, "Bicycle1");
Bicycle secondBicycle = new Bicycle(200, "Bicycle2");
Bicycle fastestBike = Bicycle.seeWhosFastest(firstBicycle,
secondBicycle);
System.out.println(fastestBike);
}
它应该按预期工作
希望对您有所帮助