パラメータと戻り値の両方を呼び出す方法


// 4. 매개변수도 있고, 리턴값도 있는 메서드 호출
		// => 1000원을 전달하므로 매개변수(int money)가 필요하며, 메서드 호출 시 소괄호 내부에 정수 1개 전달
		// => 리턴값이 있으므로, 메서드 호출 코드를 변수에 대입하거나 출력문에서 호출해야함
		System.out.println("동생아! 1000원 줄테니 쿠쿠다스 좀 사온나!");
		int money = 1000;
		
		String resultSnack = sister_4(money);
		System.out.println("동생이 사다준 것 : " + resultSnack);
		
		System.out.println("--------------------------------");
		
		// 추가5. 매개변수가 복수개인 메서드(리턴값은 무관) 호출
		System.out.println("동생아! 쿠쿠다스랑 500원 줄테니 초코파이로 바꿔온나!");
		resultSnack = sister_5(resultSnack, 500); // 메서드 정의 시 매개변수 순서는 반드시 String, int 여야한다!
		System.out.println("동생이 바꿔다준 것 : " + resultSnack);
		
		
	} // main() 메서드 끝
	
	// 추가5. 매개변수가 복수개인 메서드(리턴값은 무관) 정의
	public static String sister_5(String snack, int money) {
		System.out.println("동생 : 오빠가 준 과자 = " + snack);
		System.out.println("동생 : 오빠가 준 돈 = " + money + "원");
		
		money -= 500;
		snack = "초코파이";
		System.out.println("동생 : " + snack + "(으)로 바꿨다!");
		
		return snack;
	}
	// 4. 매개변수도 있고, 리턴값도 있는 메서드 호출
	// => 리턴값이 있으므로, 리턴할 데이터의 데이터타입을 리턴타입 부분에 기술
	//    (리턴할 데이터가 문자열이므로 리턴타입에 String 타입 명시)
	// => 전달인자(데이터)가 있으므로 매개변수 부분에 데이터를 전달받아 저장할 변수 선언
	//    (외부로부터 호출 시 정수 1개를 전달받으므로 정수형 변수 1개 선언 필요)
	public static String sister_4(int money) {
		System.out.println("동생 : 오빠가 과자 사오라고 " + money + " 원을 줬다!");
		money -= 800;
		System.out.println("동생 : 쿠쿠다스 사고 " + money + "원이 남았다!");
		
		String snack = "쿠쿠다스";
		// snack 변수에 저장된 문자열을 리턴
		return snack;
	// 추가5. 매개변수가 복수개인 메서드(리턴값은 무관) 호출
	System.out.println("동생아! 쿠쿠다스랑 500원 줄테니 초코파이로 바꿔온나!");
	resultSnack = sister_5(resultSnack, 500); // 메서드 정의 시 매개변수 순서는 반드시 String, int 여야한다!
	System.out.println("동생이 바꿔다준 것 : " + resultSnack);
    
    	// 추가5. 매개변수가 복수개인 메서드(리턴값은 무관) 정의
public static String sister_5(String snack, int money) {
	System.out.println("동생 : 오빠가 준 과자 = " + snack);
	System.out.println("동생 : 오빠가 준 돈 = " + money + "원");
	
	money -= 500;
	snack = "초코파이";
	System.out.println("동생 : " + snack + "(으)로 바꿨다!");
	
	return snack;
}
			// -------------------------------------------
	// 4. 매개변수도 있고, 리턴값도 있는 메서드 호출
	// 정수 1개를 전달하면, "홀수" or "짝수" 를 판별하여 문자열로 리턴하는 checkNum2() 메서드 호출
	// ex) 2 전달 시 "짝수" 가 리턴되어야 한다!
	String result = checkNum2(5);
	System.out.println("판별 결과 : " + result);
	
	// 정수 1개(x)를 전달하면, 1 ~ x 까지의 합을 계산하여 리턴하는 sumX() 메서드 호출
	// => ex) 100 을 전달하면 1 ~ 100 까지의 합(5050) 이 리턴됨
	int total = sumX(100);
	System.out.println("1 ~ 100 까지의 합 = " + total);
	
	// -------------------------------------------
	// 추가5. 매개변수가 복수개인 메서드(리턴값은 무관) 호출
	// 문자열 1개, 정수 1개 전달 시, 문자열을 정수에 해당하는 횟수만큼 출력하는 print3() 메서드 호출
	// ex) "Hello, World!" 와 10 전달 시 "Hello, World!" 문자열을 10번 출력(리턴값 없음)
	print3("Hello, World!", 10);
	
	// 정수 2개 전달 시, 두 정수 중 더 큰 값을 리턴하는 max() 메서드 호출
	// (두 정수의 값이 같은 경우에는 둘 중 아무거나 리턴)
	// ex) 10, 20 전달 시 20 리턴됨
	int maxNum = max(100, 20);
	System.out.println("최대값 = " + maxNum);
	
} // main() 메서드 끝

// 추가5. 매개변수가 복수개인 메서드(리턴값은 무관) 정의
// 문자열 1개, 정수 1개 전달 시, 문자열을 정수에 해당하는 횟수만큼 출력하는 print3() 메서드 정의
public static void print3(String str, int count) {
	for(int i = 1; i <= count; i++) {
		System.out.println(i + " : " + str);
	}
}

// 정수 2개 전달 시, 두 정수 중 더 큰 값을 리턴하는 max() 메서드 정의
public static int max(int num1, int num2) {
	// 최대값 판별
	if(num1 > num2) { // num1 이 num2 보다 클 경우 
		return num1; // num1 리턴
	} else { // num1 이 num2 보다 크지 않을 경우(= 두 수가 같거나 num2 가 더 클 경우)
		return num2; // num2 리턴
	}
	
}// ------------------------------------------------------------
// 4. 매개변수도 있고, 리턴값도 있는 메서드 정의
// => 정수 1개를 전달받으므로 int형 매개변수 1개 선언 필요
// => 문자열을 리턴해야하므로 String 타입으로 리턴타입 명시
public static String checkNum2(int num) {
	System.out.println("전달받은 정수 = " + num);
	
	// if문과 else 문을 조합할 경우 if문 조건식 결과가 true 일 때와 false 일 때
		// 즉, 모든 경우에 return 문이 항상 실행되므로 정상적인 리턴이 이루어짐
//		if(num % 2 == 1) { // 홀수
//			return "홀수";
//		} else { // 짝수
//			return "짝수";
//		}
		
		// 만약, if문과 else if 문을 조합할 경우
		// if문 조건식 결과가 false 이고, else if문 조건식 결과가 false 일 때
		// return 문을 실행하지 못할 경우 문법 오류가 발생하게 된다!
		// => 해결책1. else 문을 추가하여 return 문을 작성하기
//		if(num % 2 == 1) { // 홀수
//			return "홀수";
//		} else if(num % 2 == 0) { // 짝수
//			return "짝수";
//		}
		
	// => 해결책2. 조건식에 따라 각각 다른 리턴값을 변수에 저장한 후 조건문이 끝난 후 최종적으로 리턴 
	String result = ""; // 리턴값을 저장할 변수 선언
	if(num % 2 == 1) { // 홀수
		// "홀수" 문자열을 리턴값 저장 변수에 저장
		result = "홀수";
	} else if(num % 2 == 0) { // 짝수
		// "짝수" 문자열을 리턴값 저장 변수에 저장	
		result = "짝수";
	}
	
	// 저장된 결과값을 항상 리턴(if문 실행 여부와 관계없이 실행됨)
	return result;
	
}

// 정수 1개(x)를 전달받아, 1 ~ x 까지의 합을 계산하여 리턴하는 sumX() 메서드 정의
public static int sumX(int x) {
	int total = 0;
	
	for(int i = 1; i <= x; i++) {
		total += i;
	}
	
	return total;
}