// 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;
}