关于“返回”的无法到达的声明

Posted

技术标签:

【中文标题】关于“返回”的无法到达的声明【英文标题】:Unreachable Statement On "Return" 【发布时间】:2015-01-23 21:14:35 【问题描述】:

这是我的第一堂课:

public class Fraction

    int Numerator;
    int Denominator;

    /**
     * Constructor for objects of class Fraction
     */
    public Fraction()
    
        // initialise instance variables
        Numerator=0;
        Denominator=0;        
    

    public Fraction(int StartNumerator , int StartDenominator)
    
        StartNumerator = Numerator;
        StartDenominator = Denominator;      
    

    public String toString()
    
        String FractionOne = Numerator + "/" + Denominator;
        String FractionTwo = Numerator + "/" + Denominator;

        return FractionOne;
        return FractionTwo;
          

这是我的第二堂课:

public class TestFraction

    public static void main (String [] args)
    

        Fraction FractionOne = new Fraction(1 , 4);
        Fraction FractionTwo = new Fraction(2 , 3);

        System.out.println(FractionOne);
        System.out.println(FractionTwo);     
    

当我编译时,我得到一个错误:return FractionTwo; 作为无法访问的语句

请帮助我理解我做错了什么。

【问题讨论】:

您应该考虑对变量名使用小写驼峰式约定。它将减少可能需要查看您的代码的其他程序员的困惑。 【参考方案1】:
return FractionOne;
return FractionTwo;

你不能有两个一个接一个的返回语句。第二个永远无法执行,因为第一个将退出该方法。这就是为什么第二个语句无法访问的原因。

如果您想要返回两个字符串,您可能应该将它们连接起来:

return FractionOne+FractionTwo;

return FractionOne+","+FractionTwo;

return FractionOne+"\n"+FractionTwo;

但是,由于它们都是相同的,我看不出返回两者的意义。

【讨论】:

等等,它们是如何相同的,它们有不同的值? @Brendanten 您将Numerator + "/" + Denominator; 分配给他们两个。【参考方案2】:

问题是你只能有一个回报。

如果您需要发送 2 个值,请查看 Java Collections API

你可以这样做:

@Override
public String toString()
 
    String FractionOne = Numerator + "/" + Denominator;
    String FractionTwo = Numerator + "/" + Denominator;
    return FractionOne + " "+ FractionTwo;

请在函数中添加 override 以覆盖 toString 功能

【讨论】:

【参考方案3】:

就像其他人所说的,一旦你“返回”,就无法处理更多的语句。

另外,你会遇到这个构造函数的问题:

  public Fraction(int StartNumerator , int StartDenominator)
    
        StartNumerator = Numerator;
        StartDenominator = Denominator;

    

最后,您在默认构造函数中将分母初始化为 0。这可能是个坏主意。

【讨论】:

以上是关于关于“返回”的无法到达的声明的主要内容,如果未能解决你的问题,请参考以下文章

关于函数声明的小知识点

关于Github网页打不开与图片无法加载解决方法

关于全局变量和局部变量的理解

关于退货声明的 Oracle 文档

idea关于“无法找到元素 'context:component-scan' 的声明”的问题

关于spring”通配符的匹配很全面, 但无法找到元素 'context:component-scan' 的声明“的错误