본문 바로가기

JAVA

메서드 연습 | 21/11/16

 

코드 작성
package method_basic;

public class Test {

	public static void main(String[] args) {
		// 메서드 정의 및 호출 연습
		// 1. 매개변수가 없고, 리턴값도 없는 메서드 호출
		// => "Hello, World!" 문자열을 10번 반복 출력하는 hello() 메서드 호출
		hello(); // hello() 메서드 호출
		// hello() 메서드를 호출할 때마다 "Hello, World!" 문자열을 10번씩 출력 가능
		hello();
		System.out.println("------------");
		// => 구구단 2단 ~ 9단까지 출력하는 gugudan() 메서드 호출
		gugudan();

		System.out.println("====================");

		// 2. 매개변수는 없고, 리턴값만 있는 메서드 호출
		// => sum() 메서드를 호출하여 리턴되는 정수를 int형 변수 result 에 저장 후 출력
//		int result = sum();
//		System.out.println("1 ~ 10 까지 정수의 합 = " + result);
		System.out.println("1 ~ 10 까지 정수의 합 = " + sum());

		// => 자신의 이름을 리턴하는 니이름이뭐니() 메서드 호출하여 리턴되는 이름을 출력
		String name = 니이름이뭐니();
		System.out.println("너의 이름은 : " + name);

		System.out.println("====================");

		// 3. 매개변수만 있고, 리턴값은 없는 메서드 호출
		// 이름을 전달하면 전달받은 이름을 출력하는 printName() 메서드 호출
		printName("홍길동");
		System.out.println("---------");
		// 정수 1개를 전달하면 전달받은 정수에 대해 "홀수" 와 "짝수" 판별하여 출력하는 checkNum() 메서드 호출
		checkNum(9);
		System.out.println("---------");
		// ----------------- 숙제 --------------------
		// 문자열 1개를 전달하면 해당 문자열을 10번 반복 출력하는 print() 메서드 호출
		// ex) 메서드에 "Hello, World!" 문자열 전달 시 "Hello, World!" 문자열 10번 출력
		print("Hello, World!");
		
		System.out.println("---------");
		// 정수 1개를 전달하면 "Hello, World!" 문자열을 전달받은 정수만큼 반복 출력하는 print2() 메서드 호출
		// ex) 메서드에 5 전달 시 "Hello, World!" 문자열 5번 출력
		print2(15);
		
		// 정수 1개를 전달하면 전달받은 정수에 해당하는 구구단을 출력하는 gugudan2() 메서드 호출
		// ex) 메서드에 2 전달 시 구구단 2단 출력
		gugudan2(5);
		
		// -------------------------------------------
		// 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 리턴
		}
		
	}
	

	// ---------------- 메서드 정의 ------------------
	// < 메서드 정의 기본 문법 >
	// [제한자] 리턴타입 메서드명([매개변수...]) {
	// // 메서드가 호출되었을 때 실행할 코드들...
	// [return [값];]
	// }
	// -----------------------------------------------
	// 1. 매개변수가 없고, 리턴값도 없는 메서드 정의
	// => "Hello, World!" 문자열을 10번 반복 출력하는 hello() 메서드 정의
	public static void hello() {
		// for문을 사용하여 "Hello, World!" 문자열 10번 반복 출력하기
		for (int i = 1; i <= 10; i++) {
			System.out.println(i + " : Hello, World!");
		}
	}

	// 구구단을 2단 ~ 9단까지 차례대로 출력하는 gugudan() 메서드 정의
	public static void gugudan() {
		for (int dan = 2; dan <= 9; dan++) {
			System.out.println(" < " + dan + " 단 >");

			for (int i = 1; i <= 9; i++) {
				System.out.println(dan + " * " + i + " = " + (dan * i));
			}

			System.out.println();
		}
	}

	// ------------------------------------------------------------------
	// 2. 매개변수는 없고, 리턴값만 있는 메서드 정의
	// 1 ~ 10 까지 정수의 합(55)을 계산하여 리턴하는 메서드 sum() 정의
	public static int sum() {
		// 반복문(for)을 사용하여 1 ~ 10 까지 정수의 합 계산하여 누적변수 total 에 누적
		int total = 0; // 누적 변수

		for (int i = 1; i <= 10; i++) {
			total += i;
		}

		// 정수의 합을 리턴값으로 지정하여 리턴
		return total; // 정수의 합 55 를 가지고 호출한 곳으로 되돌아 감

	}

	// 자신의 이름("홍길동")을 리턴하는 니이름이뭐니() 메서드 정의
	public static String 니이름이뭐니() {
		return "홍길동";
	}

	// ------------------------------------------------------------------
	// 3. 매개변수만 있고, 리턴값은 없는 메서드 호출
	// 이름을 전달받아 String 타입 변수 name 에 저장 후 출력하는 printName() 메서드 정의
	public static void printName(String name) { // String name = "홍길동" 과 동일
		System.out.println("전달받은 이름 : " + name);
	}
	
	// 정수 1개 전달받아 int 타입 num 에 저장 후 "홀수" or "짝수" 를 판별하여 출력하는 checkNum() 메서드 정의
	public static void checkNum(int num) {
		if(num % 2 == 0) {
			System.out.println(num + " = 짝수!");
		} else {
			System.out.println(num + " = 홀수!");
		}
	}
	
	// 문자열 1개를 전달받아 10번 출력하는 print() 메서드 정의
	public static void print(String str) {
		for (int i = 1; i <= 10; i++) {
			System.out.println(i + " : " + str);
		}
	}
	
	// 정수 1개를 전달받아 "Hello, World!" 문자열을 전달받은 정수만큼 반복 출력하는 print2() 메서드 정의
	public static void print2(int count) {
		for(int i = 1; i <= count; i++) {
			System.out.println(i + " : Hello, World!");
		}
	}
	
	// 정수 1개를 전달하면 전달받은 정수에 해당하는 구구단을 출력하는 gugudan2() 메서드 정의
	public static void gugudan2(int dan) {
		System.out.println(" < " + dan + " 단 >");
		for(int i = 1; i <= 9; i++) {
			System.out.println(dan + " * " + i + " = " + (dan * i));
		}
		
	}
	
	// ------------------------------------------------------------
	// 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;
	}
	

} // Test 클래스 끝

[코드 설명]

출력 결과

1 : Hello, World!
2 : Hello, World!
3 : Hello, World!
4 : Hello, World!
5 : Hello, World!
6 : Hello, World!
7 : Hello, World!
8 : Hello, World!
9 : Hello, World!
10 : Hello, World!
1 : Hello, World!
2 : Hello, World!
3 : Hello, World!
4 : Hello, World!
5 : Hello, World!
6 : Hello, World!
7 : Hello, World!
8 : Hello, World!
9 : Hello, World!
10 : Hello, World!
------------
 < 2 단 >
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18

 < 3 단 >
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27

 < 4 단 >
4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36

 < 5 단 >
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45

 < 6 단 >
6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
6 * 7 = 42
6 * 8 = 48
6 * 9 = 54

 < 7 단 >
7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63

 < 8 단 >
8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72

 < 9 단 >
9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81

====================
1 ~ 10 까지 정수의 합 = 55
너의 이름은 : 홍길동
====================
전달받은 이름 : 홍길동
---------
9 = 홀수!
---------
1 : Hello, World!
2 : Hello, World!
3 : Hello, World!
4 : Hello, World!
5 : Hello, World!
6 : Hello, World!
7 : Hello, World!
8 : Hello, World!
9 : Hello, World!
10 : Hello, World!
---------
1 : Hello, World!
2 : Hello, World!
3 : Hello, World!
4 : Hello, World!
5 : Hello, World!
6 : Hello, World!
7 : Hello, World!
8 : Hello, World!
9 : Hello, World!
10 : Hello, World!
11 : Hello, World!
12 : Hello, World!
13 : Hello, World!
14 : Hello, World!
15 : Hello, World!
 < 5 단 >
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
전달받은 정수 = 5
판별 결과 : 홀수
1 ~ 100 까지의 합 = 5050
1 : Hello, World!
2 : Hello, World!
3 : Hello, World!
4 : Hello, World!
5 : Hello, World!
6 : Hello, World!
7 : Hello, World!
8 : Hello, World!
9 : Hello, World!
10 : Hello, World!
최대값 = 100

 

나의 소감
   메서드는 한마디로 음.... 총의 총알같다
   준비를 해두었다가 발사(호출) 하면 탁 튀어나오는 총알!

 

'JAVA' 카테고리의 다른 글

클래스 2 | 21/11/18  (0) 2022.01.06
클래스 | 21/11/18  (0) 2022.01.06
메서드 | 21/11/16  (0) 2022.01.06
do ~ while문 | 21/11/15  (0) 2022.01.06
for문 활용 | 21/11/15  (0) 2022.01.06