2011-08-20 132 views
-6

下面的代码会产生编译错误。代码会产生编译错误

string GetAgePhrase(int age) 
    { 
    if (age > 50) return "Naresh"; 
    if (age > 30) return "Ravi"; 
    if (age > 10) return "Nagendra"; 
    if (age > 9) return "Jagan"; 
    if (age > 2) return "Raja"; 
    } 

为 函数的最后一行以下哪项陈述,插入,就可以解决这个问题?

+0

你的意思是什么“后面的陈述”?请澄清 – alexm

+3

这不是让您选择作业或考试题目的地方。获取代码,尝试编译它,阅读错误消息,并查看自己修复的内容。 –

+0

你可能不应该硬编码这些值。一个数据库表或甚至在你的配置文件中的条目将是一个更好的方式来做到这一点。这样,当用户想要区分70岁以上的人时,或者将30到50之间的空间划分为30/40和40/50之间的分隔符或更改其中一个名称时,可以避免不可避免的更改带来的问题。 –

回答

2

这段代码的问题是并不是代码的所有路径都返回一个值......即,如果age是0,该怎么办?您可以通过在最后一条if语句return null之后添加以解决此问题,如果没有条件满足,它将始终具有返回值。

0

你的方法并不总是返回一个值,所以在所有的if语句之后只是一个默认的返回值。

string GetAgePhrase(int age) 
    { 
    if (age > 50) return "Naresh"; 
    if (age > 30) return "Ravi"; 
    if (age > 10) return "Nagendra"; 
    if (age > 9) return "Jagan"; 
    if (age > 2) return "Raja"; 

    return null; 
    } 
+0

是的,它会返回默认值。 – Naresh