关于“返回”的无法到达的声明
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。这可能是个坏主意。
【讨论】:
以上是关于关于“返回”的无法到达的声明的主要内容,如果未能解决你的问题,请参考以下文章
idea关于“无法找到元素 'context:component-scan' 的声明”的问题
关于spring”通配符的匹配很全面, 但无法找到元素 'context:component-scan' 的声明“的错误