【问题标题】: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; 作为无法访问的语句

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

【问题讨论】:

  • 您应该考虑对变量名使用小写驼峰式约定。它将减少可能需要查看您的代码的其他程序员的困惑。

标签: java methods accessor unreachable-statement


【解决方案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。这可能是个坏主意。

    【讨论】:

      猜你喜欢
      • 2013-04-14
      • 1970-01-01
      • 2013-12-15
      • 2018-08-23
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多