2011-08-20 7 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

관련 문제