0

这是我的第一堂课:

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; 作为一个无法到达的声明

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

4

3 回答 3

3
return FractionOne;
return FractionTwo;

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

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

return FractionOne+FractionTwo;

或者

return FractionOne+","+FractionTwo;

或者

return FractionOne+"\n"+FractionTwo;

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

于 2014-11-25T18:25:57.000 回答
0

就像其他人所说的那样,一旦您“返回”,就无法处理进一步的陈述。

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

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

    }

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

于 2014-11-25T18:36:15.610 回答
0

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

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

您可以执行以下操作:

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

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

于 2014-11-25T18:27:13.957 回答