코딩 기록들
[Java Programming] 4.1 (반환하는) 메소드 본문
함수에 넣는 매개변수 = 파라미터
함수에 매개변수를 넣어서 나오는 값 = 반환(return)
Method Return
- 메소드가 처리한 결과를 반환(return) -> 값이 반환되면 호출자에게 할당됨
반환을하는 메소드 호출 방법
데이터타입 변수명 = 메소드명();
-> 메소드명 = 호출자
-> 데이터타입 변수명 (반환값을 내가 몰라도 될 경우)은 꼭 없어도 됨
- 메소드의 반환타입과 할당받을 변수의 데이터타입은 반드시 동일해야함
반환타입에
- void : 반환시킬게 없는경우 = return 이 없음 (void 외에는 모두 return 키워드가 마지막에 항상 있어야함)
- primitive type(숫자, 문자, boolean) : byte short int long / double float / char / boolean 이 들어갈수 있음 = return 키워드 필수 (반환값과 반환타입은 일치해야함)
public class App {
public static int getMultiply(int num, int time) {
return num * time;
}
public static void main(String[] args) {
getMultiply(10, 4);
}
}
-> getMultiply(10, 4); 에서 메소드를 호출하지만, 이 값을 할당받는 코드가 없음
public static void main(String[] args) {
int result = getMultiply(10, 4);
}
-> 이렇게 반환시킬 값을 할당할 변수(int resulst)를 반드시 적어줘야됨
returun 의 역할
1. 반환시켜라
2. 리턴을 만나면 해당 메소드를 종료시켜라 (리턴문 이후에 다른 코드를 적는다면, dead code 에러가 발생함)
예제 1
- 초를 파라미터로 받으면 분, 초를 반환하는 메소드로 만들어 호출하고 결과를 출력
- *반환해야하는 값이 2개이므로, 메소드도 2개*
public class ReturnMethodQuiz1 {
/**
* 수행시간(초)을 파람리터로 받아서, 분(minutes) 만 구해 반환시킴
* @param processTime 수행시간(초)
* @return 수행시간(초)를 분(minutes)으로 변환한 결과
*/
public static int getMinutes(int processTime) {
int processMinutes = processTime / 60;
return processMinutes;
}
/**
* 수행시간(초)을 파람리터로 받아서, 분을 제외한 나머지 초(seconds)만구해 반환시킴
* @param processTime 수행시간(초)
* @return 수행시간(초)을 분을 제외한 나머지 초(seconds)로 변환한 결과
*/
public static int getSeconds(int processTime) {
int processSeconds = processTime % 60;
return processSeconds;
}
public static void main(String[] args) {
int processTime = 145;
int minutes = getMinutes(processTime);
int seconds = getSeconds(processTime);
System.out.println(minutes); // 2
System.out.println(seconds); // 25
}
}
예제 2
- 분과 초를 받아 초를 반환하는 메소드를 만들어 호출하고 결과를 출력
public class ReturnMethodQuiz2 {
/**
* 분과 초를 모두 초로 반환시키는 기능
* @param minutes // 아래 메인함수의 변수인 minutes와는 관련없음
* @param seconds // 아래 메인함수의 변수인 seconds와는 관련없음
* @return
*/
public static int getSeconds(int minutes, int seconds) {
int result = minutes * 60 + seconds;
return result;
}
public static void main(String[] args) {
int minutes = 5;
int seconds = 50;
int time = getSeconds(minutes, seconds);
System.out.println(time);
}
}
예제3
- 섭씨를 파라미터로 받아 화씨를 반환하는 메소드로 만들어 호출하고 결과를 출력
public class ReturnMethodQuiz3 {
public static int getCelsiusToFahrenheit(int celsius) {
int farenheit = celsius * 9 / 5 + 32;
return farenheit;
}
public static void main(String[] args) {
int celsius = 30;
int farenheit = getCelsiusToFahrenheit(celsius);
System.out.println(farenheit);
}
}
예제4
평균내서 성적 구하기
- 단, 메소드 3개로 구성 (1. 과목별 점수를 파라미터로 받아 합계 구해 반환, 2. 합계와 4를 파라미터로 받아 평균을 구해 반환, 3. 평균을 파라미터로 받아 등급 반환)
*메소드 이름은 동사로 시작!!!*
public class ReturnMethodQuiz4 {
/**
* 점수들의 합계를 구한다
* @param kor
* @param eng
* @param math
* @param prog
* @return 점수들의 총 합
*/
public static int getSum(int kor, int eng, int math, int prog) {
int sum = kor + eng + math + prog ;
return sum;
}
/**
* 성적의 평균을 구한다
* @param sum 성적의 합
* @param subjectCount 과목의 개수
* @return 성적의 평균
*/
public static int getAverage(int sum, int subjectCount) {
int average = sum / subjectCount;
return average;
}
/**
* 평균의 등급을 구한다
* @param average 평균 성적
* @return 평균 성적에 알맞는 등급
*/
public static String getGrade(int average) {
String grade = "";
if (average >= 95) {
grade = "A+";
}
else if(average >= 90) {
grade = "A";
}
else if(average >= 85) {
grade = "B+";
}
else if(average >= 80) {
grade = "B";
}
else if(average >= 70) {
grade = "C";
}
else {
grade = "F";
}
return grade;
}
public static void main(String[] args) {
int korScore = 90;
int engScore = 88;
int mathScore = 70;
int progScore = 80;
int subjectCount = 4;
// 순서1. 과목별 합계를 구한다.
int sum = getSum(korScore, engScore, mathScore, progScore);
// 순서2. 평균점수를 구한다.
int average = getAverage(sum, subjectCount);
// 순서3. 등급을 구한다.
String grade = getGrade(average);
System.out.println(grade);
}
}
예제4.
비행기요금 계산
public class ReturnMethodQuiz5 {
public static int getFlightFare(int age, int adultOneWayFlightFare, int kidOneWayFlightFare) {
int money = 0;
if (age>=19) {
money = adultOneWayFlightFare;
}
else {
money = kidOneWayFlightFare;
}
return money;
}
public static void main(String[] args) {
int money = 1_000_000;
int father = 40;
int mother = 36;
int daughter = 11;
int adultOneWayFlightFare = 300_000;
int kidOneWayFlightFare = 120_000;
int flightFare = getFlightFare(father, adultOneWayFlightFare, kidOneWayFlightFare);
flightFare += getFlightFare(mother, adultOneWayFlightFare, kidOneWayFlightFare);
flightFare += getFlightFare(daughter, adultOneWayFlightFare, kidOneWayFlightFare);
if (flightFare <= money) {
System.out.println("여행가자!");
}
else {
System.out.println("다음에가자ㅠㅠ");
}
}
}
'Java' 카테고리의 다른 글
[Java Programming] 5.2 패키지, 접근제어지시자, 정보은닉&캡슐화 (0) | 2024.01.23 |
---|---|
[Java Programming] 4.2 클래스와 인스턴스 (0) | 2024.01.22 |
[Java Programming] 3.2 메소드 (0) | 2024.01.19 |
[Java Programming] 3.1 실행흐름 제어 - 조건문 (while, for) (1) | 2024.01.19 |
[Java Programming] 2.2 실행흐름 제어 - 조건문 (if~else if ~ else, Switch) (0) | 2024.01.18 |