코딩 기록들

[Java Programming] 4.1 (반환하는) 메소드 본문

Java

[Java Programming] 4.1 (반환하는) 메소드

코딩펭귄 2024. 1. 22. 09:55

함수에 넣는 매개변수 = 파라미터 

함수에 매개변수를 넣어서 나오는 값 = 반환(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("다음에가자ㅠㅠ");
		}
	}
}