인프런 커뮤니티 질문&답변

그림으로 배우는 자바, 파트1: 입문!
중첩된 조건문
메소드 내 문자 출력 위치 문의 : 메소드 내부 print f() 위치
안녕하세요. 강의내용중에 문의사항이 있어 문의드립니다.
- #성인 남여 평균 키 기준을 통해, 평균 이상/미만 여부를 구분하려 한다.
- 출력 예와 같은 결과를 얻도록, 코드를 완성하시오.
- 176.3cm, 남 => 평균키 이상
162.7cm, 여 => 평균키 이상
171.8cm, 남 => 평균키 이하
158.4cm, 여 => 평균키 이하
해당 문제를 풀다보니 아래 부분에서 오류 발생 및 혼선이오는데요
- ① test의 메소드 영역안에 printf의 출력이 들어가는 경우에는 정상 출력이 됩니다.
- public class AverageHeight { public static void main(String[] args) { test(176.3, true) ; // 176.3cm, 남 => 평균키 이상, 남자=true test(162.7, false) ; // 176.3cm, 남 => 평균키 이상, 남자=true test(171.8, true) ; // 176.3cm, 남 => 평균키 이상, 남자=true test(158.4, false) ; // 176.3cm, 남 => 평균키 이상, 남자=true } public static void test(double height, boolean isMale) { String gender = "" ; // gender 변수 생성 String result = "" ; // result 변수 생성 if (isMale) { gender = "남" ; // 남자 조건문 생성 if (height > 173.5) { // 남자 평균키 173.5보다 크다) result = "이상" ; //평균키보다 높다: 이상 } else { result = "이하" ; //평균키보다 낮다 : 미만 } } else { gender = "여" ; //여자 조건문 생성(False) if (height > 160.8) { // 여자 평균키 160.8보다 크다) result = "이상" ; //평균키보다 높다: 이상 } else { result = "이하" ; //평균키보다 낮다 : 미만 } } System.out.printf("%.1fcm, %s => 평균키 %s", height, gender, result); }}
- ② test의 메소드 영역밖에 printf의 출력이 들어가는 경우에는 정상 출력이 되지 않는데 왜 안되는지 이해가 잘 가지 않습니다.
- public class AverageHeight { public static void main(String[] args) { test(176.3, true) ; // 176.3cm, 남 => 평균키 이상, 남자=true test(162.7, false) ; // 176.3cm, 남 => 평균키 이상, 남자=true test(171.8, true) ; // 176.3cm, 남 => 평균키 이상, 남자=true test(158.4, false) ; // 176.3cm, 남 => 평균키 이상, 남자=true } public static void test(double height, boolean isMale) { String gender = "" ; // gender 변수 생성 String result = "" ; // result 변수 생성 if (isMale) { gender = "남" ; // 남자 조건문 생성 if (height > 173.5) { // 남자 평균키 173.5보다 크다) result = "이상" ; //평균키보다 높다: 이상 } else { result = "이하" ; //평균키보다 낮다 : 미만 } } else { gender = "여" ; //여자 조건문 생성(False) if (height > 160.8) { // 여자 평균키 160.8보다 크다) result = "이상" ; //평균키보다 높다: 이상 } else { result = "이하" ; //평균키보다 낮다 : 미만 } }} System.out.printf("%.1fcm, %s => 평균키 %s", height, gender, result); }