Java Error unreachable 语句
Posted
技术标签:
【中文标题】Java Error unreachable 语句【英文标题】:Java Error unreachable statement 【发布时间】:2016-01-15 06:06:42 【问题描述】:我正在尝试创建一个具有基础对象的类。基础对象将用于创建一些对象,并根据力量和能量提升在另一个类别中“战斗”。
编译“错误,无法访问的语句”时出现此错误,它指向指向返回的第 27 行,有人可以帮我吗?
public class Superhero
private String superheroName;
private int superheroStrength;
public int powerUp;
public Superhero (String superheroName, int superheroStrength, int powerUp)
this.superheroName = superheroName;
this.superheroStrength = superheroStrength;
System.out.println("Superhero: " + superheroName);
System.out.println("Strength: " + ( superheroStrength + powerUp));
public Superhero (String superheroName, int powerUp)
this.superheroName = superheroName;
superheroStrength = 10;
System.out.println("Strength: " + ( superheroStrength+powerUp));
public int getStrength()
return superheroStrength += powerUp;
public void powerUp (int powerUp)
this.powerUp += powerUp;
public Superhero battle(Superhero1 opponent)
if (this.getStrength()>opponent.getStrength());
return this;
return opponent;
public String toString()
return this.superheroName;
【问题讨论】:
删除此行末尾的;
:if (this.getStrength()>opponent.getStrength());
或者,将上述;
替换为
并将return this;
放入块中。这将使它更具可读性,解决无法访问的问题,并使其更加明显,因为现在它甚至没有缩进。
这就是为什么您应该始终对if
语句使用大括号的原因之一,即使它们只包含一个语句。
@JonK 即使你有大括号,也同样可能犯同样的错误。
【参考方案1】:
一个额外的;
造成了所有的混乱
if (this.getStrength()>opponent.getStrength()); <--
那个分号终止了那里的语句,并假设它是一个从那里开始的新块。
因此代码
public Superhero battle(Superhero1 opponent)
if (this.getStrength()>opponent.getStrength());
return this;
return opponent;
等于
public Superhero battle(Superhero1 opponent)
if (this.getStrength()>opponent.getStrength())
return this;
return opponent;
删除多余的;
(希望不是故意输入),这样代码就可以了。
正如有人已经评论过的那样,这就是原因,总是使用花括号来避免这种情况。
【讨论】:
以上是关于Java Error unreachable 语句的主要内容,如果未能解决你的问题,请参考以下文章
记录实时问题:java 出现unreachable statement异常
Java 中的 if (boolean)unreachable 语句
尝试编译“while”语句时的“unreachable statement”
Ansible 错误 "ERROR! (25, 'Inappropriate ioctl for device')", "unreachable" 是啥意思?