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

[JAVA] 10. method

by cosmog 2022. 10. 4.
반응형
method
  • 메서드 - 반복되는 코드 블록에 이름을 붙여 놓은 것.
  1. 반복되는 코드를 줄여준다
  2. 코드를 구조화 시켜 알아보기 쉽게 만든다.
<method선언 방법>
type name (parameters)
{
	상세 기능
}
  • type은 메소드가 돌려주는 값의 data type (=return type)
  • parameters (매개변수) 필요한 값을 외부로 부터 전달받을 수 있는데 그 값에 대한 data type을 말한다.

 

  • 아래와 같이 4가지 유형으로 사용할 수 있다.
parameter O, return O
parameter O, return X (return 값이 없다면 type은 void가 된다.)
parameter X, return O (parameter칸을 비워둔다)
parameter X, return X


➰ 반환 O, 매개변수 X (return O, parameter X)

- 1~10까지 합을 구하는 메소드 생성 및 사용
- 문자열의 결과를 반환하는 메소드 생성 및 사용
- return 키워드 활용

public class MethodEx01 {

	public static void main(String[] args) {

		//method는 method내부에 생성할 수 없다.
		//절차지향언어인 C언어는 무조건 위쪽 바깥에서만 선언할 수 있지만
		//객체지향언어인 java는 main밖에, 클래스 안에 어디서든 선언할 수 있다.

		//1~10까지 합
		/*
		int sum = 0;
		for(int i = 1; i <=10; i++) {
			sum += i;
		}
		*/
		
		//System.out.println(calSum());
		int result = calSum();
		System.out.println(result);
		int result2 = calSum();
		System.out.println(result2);
		
		String result3 = ranStr();
		System.out.println(result3);
		
		String result4 = ranStr2();
		System.out.println(result4);

	}//메인 끝

	//반환은 있고 매개값은 없는 모형(return O, parameter X) - 1부터 10까지 합
	static int calSum()
	{
		int sum = 0;
		for(int i = 1; i <=10; i++) {
			sum += i;
		}
		return sum;
	}

	//반환은 있고 매개값은 없는 (return O, parameter X) - 문자열의 결과 반환
	static String ranStr () {
		
		String str = ""; //A + B + C ....+ Z
		for(char c = 'A'; c <= 'Z'; c++) {
			str += c;
		}
		return str; // String의 기본값 null
	}
	
	//반환은 있고 매개값은 없는 (return O, parameter X) - return 키워드의 활용
	static String ranStr2() {
		double d = Math.random();
		
		if(d > 0.66) {
			return "가위";
		} else if (d > 0.33) {
			return "바위";
		} else {
			return "보";
		}
		
		/*
		String str;
		if( d > 0.66) {
			str = "가위";
		} else if (d > 0.33) {
			str = "바위";
		} else {
			str = "보";
		}
		return str;
		*/
	}
}

 

 반환 O, 매개변수 O (return O, parameter O)

- 매개변수 여러개 받기 사용.

public class MethodEx02 {
	
	public static void main(String[] args) {
		
		/*
		 * 매개변수(parameter)
		 * 1. 매개변수는 메서드를 호출할 때 필요한 값을 전달하는 매개체.
		 * 2. 매게변수는 몇 개 반들지 메서드를 선언할 때 결정해줍니다.
		 */
		
		/*
		int sum = 0;
		int end = 10;
		for(int i = 1; i <= end; i++) {
			sum += i;
		}
		*/
		
		/*메서드를 사용한다면 매번 다른 값을 사용하여 결과값을 뽑아내기 수월하다*/
		int result = calSum(10);
		System.out.println("1~10까지 합:" + result);
		
		int result2 = calSum(100);
		System.out.println("1~100까지 합:" + result2);
		
		int result3 = calSum2(10, 20);
		System.out.println("10~20까지 합:" + result3);
		
	}
	
	//반환 O, 매개변수 O (return O, parameter O)
	static int calSum(int end) {
		int sum = 0;
		for(int i = 1; i <= end; i++) {
			sum += i;
		}
		return sum;
	}
	
	//반환 O, 매개변수 O (return O, parameter O) - 매개변수가 여러개
	static int calSum2(int start, int end) {
		int sum = 0;
		for(int i = start; i <= end; i++) {
			sum += i;
		}
		return sum;
	}

}

 

반환 X, 매개변수 O (return X, parameter O) & void형에서 return (종료)
- 리턴이 없음(단순실행) 사용

- void형에서 return 종료용도로 사용.

public class MethodEx03 {

	public static void main(String[] args) {

		/*
		 * 반환유형(return type)
		 * 1. 반환유형은 매서드가 돌려주는 값에 대한 타입.
		 * 2. 반환유형이 있는 메서드는 호출 구문이 값이 도기 때문에 메서드의 매개값으로 사용될 수 있다.
		 * ex) println(메서드 호출)
		 * 3. 모든 메서드는 return을 강제종료 됩니다.
		 * 4. 리턴문 아래에는 코드를 작성할 수 없습니다. (작성해도 실행안됨)
		 */
		int result = add(3,5);
		System.out.println("결과" + result);

		//아래와 같이 사용도 가능하다.
		//앞부터 1+2 = 3 & 2+3=5
		//3+5 = 8
		add(add(1,2), add(2,3));
		
		//반환값이 없기 때문에 아래처럼 변수에 값을 받을 수는 없다.
		//int r = sub(1,2);
		//이런식으로 호출만 가능하다.
		sub(1,2);
		
		noReturn("hello");
		
	}
	// 반환 O, 매개변수 O (return O, parameter O)
	static int add(int a, int b) {
		return a+b;
	}
	
	//반환 X, 매개변수 O (return X, parameter O) - 리턴이 없음(단순실행)
	static void sub(int a ,int b) {
		System.out.println("a-b=" + (a-b));
	}
	
	//void형에서 return - 종료
	static void noReturn(String s) {
		if(s.equals("hello")) {
			System.out.println("실행종료");
			return;//종료
		}
		System.out.println(s);
	}

}

 

💡 return의 의미

1. 매서드의 종료
2. 값의 반환

 

Quiz - 입력받은 두 수의 합을 구하는 코드를 method를 활용하도록 변환해보기

import java.util.Scanner;

public class Quiz21 {
	
	public static void main(String[] args) {
		
		
		/* 아래 코드를 매서드로 변환해보기*/
		/*
		//1 - 입력받은 값을 반환시키고(재활용)
		Scanner scan = new Scanner(System.in);
		int a = scan.nextInt();
		int b = scan.nextInt();
		
		//2
		int result = a+b;
		
		//3
		System.out.println("두 수의 합:" + result);
		
		scan.close();
		*/
		
		int a = input();
		int b = input();
		
		int result = sum(a,b);
		
		print(result);
		
	}
	
	static int input() {
		Scanner scan = new Scanner(System.in);
		System.out.print("Input>");
		int a = scan.nextInt();
		return a;
	}
	
	static int sum(int a, int b) {
		return a+b;
	}
	
	static void print(int result) {
		System.out.println("두 수의 합:" + result);
	}

}

 

Quiz - 아래에 주어진 조건들로 method만들기


public class Quiz22 {
	
	public static void main(String[] args) {
		
		//method1 - 안녕 출력
		method1();
		
		//method2 - 전달받은 매개 변수 리턴
		System.out.println(method2("method2 전달받은 매개 변수 리턴"));
		
		//method3 - 세 매개변수 합 리턴
		System.out.println(method3(3, 4, 3.14));
		
		//method4 - 홀짝
		System.out.println(method4(33));
		System.out.println(method4(48));
		
		//method5 - int로 받은만큼 string 반복출력
		method5("반복", 5);
		
		//maxNum - 매개변수 2개 중 더 큰수 리턴
		System.out.println("더 큰 수는 "+ maxNum(25,78));
		
		//abs
		System.out.println("절대값은: " + abs(-342));
		System.out.println("절대값은: " + abs(234));
	}
	
	static void method1() {
		System.out.println("안녕");
	}
	
	static String method2(String str) {
		return str;
	}
	
	static double method3(int a, int b, double c) {
		double sum = a + b + c;
		return sum;
	}
	
	static String method4(int num) {
		if(num % 2 == 0) {
			return "짝수";
		}else {
			return "홀수";
		}
	}
	
	static void method5(String str, int num) {
		for(int i = 0; i < num; i++) {
			System.out.println(str);
		}
	}
	
	static int maxNum(int a, int b) {
		if(a < b) {
			return b;
		}else { 
			return a;
		}
		//int result = a > b ? a : b;
	}
	
	static int abs(int a) {
		
		return Math.abs(a);
		
		/* 위의 근본적인 모형.
		if(a < 0) { 
			return -a;
		}
		return a;
		*/
	}

}

 

Quiz - main과 결과값보고 method 생성하기.

main은 위와 같이 생성하고 아래와 같이 결과값이 나올 때 java method를 생성해보기.

public class Quiz23 {
	
	public static void main(String[] args) {
		
		String str = java(9);
		System.out.println(str);
	}
	
	static String java(int num) {
		String str = "";
		for(int i = 1; i <= num; i++) {
			if(i % 2 == 0) {
				str += "바";
			}else {
				str += "자";
			}
		}
		return str;
	}

}

 Quiz - 숫자 n을 받아 n의 약수를 모두 더한 값을 리턴하는 method만들기

public class Quiz24 {
	
	public static void main(String[] args) {
		
		/* 자연수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수를 완성 */
		System.out.println(sum(5));
	}
	
	static int sum (int num) {
		int sum = 0;
		for(int i = 1; i <= num; i++) {
			if(num % i == 0) {
				//System.out.println(i + "는 " + num + "의 약수");
				sum += i;
			}
		}
		return sum;
	}

}
반응형