我想要它返回新的Dillo并打印出新Dillo的长度。当我编译代码时,它会说:错误:行System.out.println(this.length);
无法访问的代码我该如何解决这个问题?谢谢
import tester.* ;
class Dillo {
int length ;
Boolean isDead ;
Dillo (int length, Boolean isDead) {
this.length = length ;
this.isDead = isDead ;
}
// produces a dead Dillo one unit longer than this one
Dillo hitWithTruck () {
return new Dillo(this.length + 1 , true) ;
System.out.println(this.length);
}
}
class Examples {
Examples () {} ;
Dillo deadDillo = new Dillo (2, true) ;
Dillo bigDillo = new Dillo (6, false) ;
}
答案 0 :(得分:3)
返回后有System.out
Dillo hitWithTruck () {
System.out.println(this.length);
return new Dillo(this.length + 1 , true) ;
}
答案 1 :(得分:1)
您在print语句之前返回值,因此在打印长度之前总是退出方法。编译器将此视为无法访问的代码,因为它永远不会执行。更改代码:
// produces a dead Dillo one unit longer than this one
Dillo hitWithTruck () {
return new Dillo(this.length + 1 , true) ;
System.out.println(this.length);
}
为:
// produces a dead Dillo one unit longer than this one
Dillo hitWithTruck () {
System.out.println(this.length);
return new Dillo(this.length + 1 , true) ;
}
答案 2 :(得分:1)
以gaston的答案为基础:
Dillo hitWithTruck () {
Dillo d = new Dillo(this.length + 1 , true);
System.out.println(d.length);
return d;
}
你回来后打印出来的长度,所以你永远不会得到这个价值。如果你想打印出你要回来的Dillo的长度,你应该试试我上面的snippit。
答案 3 :(得分:0)
您的print语句永远不会被执行,因为您之前有一个return语句。
// produces a dead Dillo one unit longer than this one
Dillo hitWithTruck () {
System.out.println(this.length+1);
return new Dillo(this.length + 1 , true) ;
}
return 语句用于显式从方法返回。也就是说,它使程序控制转移回方法的调用者。因此,它被归类为跳转声明。返回语句执行后没有任何内容。
https://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html