본문 바로가기
국비지원/JAVA

[JAVA] 11-1. method 이어서 (배열과 method)

by cosmog 2022. 10. 5.
반응형
배열과 method

배열을 parameter로 받는 method

package day11;

import java.util.Arrays;

public class MethodEx04 {
	
	public static void main(String[] args) {
		int [] arr = {1,2,3,4,5};
		String[] arr2 = {"월","화","수"};
		
		method01(arr);
		method02(arr, arr2);
		
		int[] arr3 = method03();
		String[] arr4 = "str".split("");
		System.out.println(Arrays.toString(arr3));
		System.out.println(Arrays.toString(arr4));
		
	}
	
	// 정수배열을 매개변수로 받는 메서드
	static void method01(int[] a) {
		//a를 이용해서 배열값의 사용가능
		System.out.println(Arrays.toString(a));
	}
	//정수배열과, 문자열 배열을 매개변수로 받는 메서드
	static int method02(int[] arr, String[] arr2) {
		for(int a : arr) {
			System.out.println(a);
		}
		return 0;
	}
	//배열을 반환하는 메서드
	static int[] method03() {
		int[] arr = new int[5];
		arr[0] = 0;
		arr[1] = 1;
		arr[2] = 2;
		arr[3] = 3;
		arr[4] = 4;
		return arr;
	}

}

Quiz - 아래 method 6-8까지 만들어보기

import java.util.Arrays;

public class Quiz25 {
	
	public static void main(String[] args) {
		
		//char배열의 요소를 문자열로 모두 붙여서 출력
		char[] arr = {'h','e','l','l','o'};
		String str = method6(arr);
		System.out.println(str);
		
		//배열의 요소의 합을 리턴
		int[] n_arr = {1,3,5,3,5};
		System.out.println(method7(n_arr));
		
		String str1 = "hello 안녕 봉주르 니하오";
		String str2 = "where are you from ~";
		String[] test_arr = method8(str1, str2);
		System.out.println(Arrays.toString(test_arr));
		
	}
	
	//char배열의 요소를 문자열로 모두 붙여서 리턴
	static String method6(char[] arr) {
		String str = "";
		for(int i = 0; i < arr.length; i++) {
			str += arr[i];
		}
		return str;
	}
	
	//배열의 요소의 합을 리턴
	static int method7(int[] arr) {
		int sum = 0;
		for(int i = 0; i < arr.length; i++) {
			sum += arr[i];
		}
		return sum;
	}
	
	//매개변수를 배열에 저장하여 배열 리턴
	static String[] method8(String str1, String str2) {
		String str = str1 + " " + str2;
		String[] str_arr = str.split(" ");
		
		return str_arr;
	}

}

➰ method 안에서의 method 사용과 method의 재귀적 실행

- 재귀적 함수는 탈출의 구문을 반드시 명시해주는 것이 규칙이다.
- 만약, 탈출 구문이 없다면 Stack Overflow남...
* 효율은 떨어진다. 규칙을 만드는데에는 좋지만..

package day11;

public class MethodEx05 {
	
	public static void main(String[] args) {
		
		// 메서드의 (동기적) 실행 방식
		// 동기적 - 순서대로 실행한다.
		
		test01();
		//메서드의 재귀적 실행 - 기초
		recursive(0);
		
		//메서드의 재귀적 실행 - factorial
		int sum = 1;
		for(int i = 1; i <= 5; i++) {
			sum *= i; // 팩토리얼~ (순서대로 곱해주기)
		}
		System.out.println(sum);
		
		//재귀적 함수 - 위 코드를 fac method로 만들 수 있다. (다만 효율은 좀 떨어지는,,,)
		int result = fac(5);
		System.out.println(result);
	}
	
	static void test01() {
		System.out.println("1번 메서드 실행");
		test02();
		System.out.println("1번 메서드 종료");
	}
	
	static void test02(){
		System.out.println("2번 메서드 실행");
		System.out.println("2번 메서드 종료");
	}

	static void recursive (int a) {
		//재귀적 함수는 탈출의 구문을 반드시 명시해주는 것이 규칙이다.
		if(a == 10) return;
		
		a++;//param 값 증가
		recursive(a);
	}
	
	static int fac(int a) {
		if(a == 1) return 1;//fac(1) = 1
		
		return a * fac(a-1);
	}
}

반응형