Как распечатать поле возвращаемого значения в Java
Я хочу, чтобы он возвратил новый 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) ;
}
4 ответа
У тебя есть System.out
после возвращения
Dillo hitWithTruck () {
System.out.println(this.length);
return new Dillo(this.length + 1 , true) ;
}
Чтобы основываться на ответе гастона:
Dillo hitWithTruck () {
Dillo d = new Dillo(this.length + 1 , true);
System.out.println(d.length);
return d;
}
Вы печатали длину после возвращения, поэтому вы никогда не получали значение. Если вы хотите распечатать длину Dillo, которую вы возвращаете, попробуйте мой фрагмент выше.
Вы возвращаете значение перед оператором 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) ;
}
Ваш оператор печати никогда не выполняется, потому что перед ним есть оператор возврата.
// 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 используется для явного возврата из метода. Таким образом, это заставляет управление программой возвращаться к вызывающей стороне метода. Как таковой, он классифицируется как оператор перехода. Ничего после оператора return не выполняется.
Больше информации
https://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html