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" 是啥意思?

Samba:error nt_status_host_unreachable

while之后if出现unreachable statement