关于“回归”的无法回答的声明

时间:2014-11-25 18:24:46

标签: java methods accessor unreachable-statement

这是我的头等舱:

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; 作为无法达成的陈述

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

3 个答案:

答案 0 :(得分:3)

return FractionOne;
return FractionTwo;

你不能一个接一个地有两个return语句。第二个永远不会被执行,因为第一个将退出该方法。这就是第二个陈述无法达成的原因。

如果你想要的是返回两个字符串,你应该连接它们:

return FractionOne+FractionTwo;

return FractionOne+","+FractionTwo;

return FractionOne+"\n"+FractionTwo;

然而,由于两者都是相同的,所以我没有看到返回两者的重点。

答案 1 :(得分:0)

问题是你只能有一次回归。

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

您可以执行以下操作:

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

请为该功能添加覆盖以覆盖toString functinoality

答案 2 :(得分:0)

就像其他人所说的那样,一旦你“回归”,就不能再处理其他陈述了。

此外,您将遇到此构造函数的问题:

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

    }

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