Flaming Soccer ball
JAVA

10일차 22.10.04

leo lee 2022. 10. 4.
반응형
package day10;

public class MethodEx01 {

	public static void main(String[] args) {

		//메서드는 메서드 내부에 생성 할 수 없다.
		//main 밖에, 클래스 안에 어디서든 선언 할 수 있다.
		
		//메서드의 호출 이름();
		//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);

	}//메인 끝
	
	//반환은o 매개 값x - 1 ~ 10까지 합
	static int calSum() {
		//1 ~ 10까지 합
		int sum = 0;
		
		for(int i = 1; i <=10; i++) {
			sum +=i;
		}
		
		return sum;
	}

	//반환은 o 매개값 x -문자열의 결과 반환
	static String ranStr() {
		String str = "";
		for(char c = 'A'; c <= 'Z'; c++) {
			str += c;
		}
		
		return str; //String의 기본 값은 null
	}
	
	//반환은 o 매개값 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;*/
		
	}

}

유형1 전달인자 ○ 반환값 ○  int sum( int a, int b ){ return a + b; }
유형2 전달인자 ○ 반환값 x   void sum( int a, int b ){ System.out.println(a+b);}
유형3 전달인자 x  반환값 ○  int sum( ){ int a = 5, int b = 10 ;  return a + b; }
유형4 전달인자 x  반환값 x   void sum( ){ System.out.println("합계:"); }

 

이렇게 4가지 유형이 있으며. 실제 class안 main 밖 어디에서든지 만들 수 있다. 꼭 메인 안에서 호출을 해야 된다.

 

 

package day10;

import java.util.Scanner;

public class MethodEx02 {

	public static void main(String[] args) {

		/*
		 * 매개변수(parameter)
		 * 1. 매개변수는 메서드를 호출 할 때 필요한 값을 전달하는 매개체
		 * 2. 매개변수는 몇 개 받을 지 메서드를 선언 할 때 결정해 준다.
		 */
		
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		
		int ans = calSum(N);
		System.out.println("1~" + N + "까지합:" +ans);
		
		int result = calSum(10);
		System.out.println("1~10까지합:" + result);
		
		int result2 = calSum(100);
		System.out.println("1~100까지합:" + result2);
		
		
		//calSum2();
		int result3 = calSum2(10,20);
		System.out.println("10~20까지합:" + result3);
		
		int result4 = calSum2(2,100);
		System.out.println("1~100까지합:" + result4);
		
		scan.close();
	}
	
	
	//반환o, 매개변수o - 매개변수 하나
	static int calSum(int end){ //타입 + 변수명 
		int sum = 0;
		for(int i = 1; i <= end; i++) {
			sum += i;
		}
		
		return sum;
	}
	
	//반환o, 매개변수o, 매개변수가 여러개

	static int calSum2(int start, int end) {
		int sum =0;
		for(int i = start; i <= end; i++) {
			sum += i;
		}
		return sum;
	}
}

전달인자 즉 매개변수를 메소드 안에 넣어 줌으로써 시작 값 및 종료 값을 정할 수 있다. 위에 for문을 보면 원하는 값 부터 원하는 값까지의 합을 구할 때 시작 값과 종료 값 변수를 지정해줌으로써 원하는 만큼 반복을 돌릴 수 있다.

잘 활용하면 더욱 편리해 질 것이다.

 

 

package day10;

public class MethodEx03 {

	public static void main(String[] args) {

		/*
		 * 반환유형(return type)
		 * 1. 반환유형은 메서드가 돌려주는 값에 대한 타입
		 */

		//int result = add(3,5);
		//System.out.println(result);
		//System.out.println(add(3,5));
		int result = add( add(1, 2), add(2, 3));
		System.out.println(result);

		//int r = sub(1, 2);
		//System.out.println(sub(1, 2));
		sub(1, 2);//값을 돌려 받는게 아니라서 호출만 가능하다
		noReturn("hello");
		noReturn("hi");
		
	}

	//반환o , 매개변수o
	static int add(int a, int b) {
		return a + b;
	}

	//반환x, 매개변수o void인 경우는 실행만 하고 끝, 값을 반환하는게 아니라 실행만 한다. 리턴이 없음(단순 실행)
	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);
	}

}

void가 아닌 다른 타입의 메소드를 만들면 꼭 그 타입의 리턴 값을 반환해 주어야 메소드를 형성 할 수 있다. 실제 void에서 return이 사용 가능하긴 하지만, 잘 사용하지 않으며 종료를 나타낸다.  위의 메소드들은 하나의 예시이다.

import java.util.*;
public class Quiz22 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		method1();
		String result = method2("안녕");
		System.out.println(result);
		
		double result2 = method3(1,2,3);
		System.out.println(result2);
		
		System.out.println("숫자입력>");
		int a = scan.nextInt();
		String result3  = method4(a);
		System.out.println(result3);
		
		System.out.println("복사할 문자 입력>");
		String str1 = scan.next();
		System.out.println("반복할 숫자 입력>");
		int b = scan.nextInt();
		method5(str1, b);
		
		System.out.println("숫자 입력>");
		int num1 = scan.nextInt();
		System.out.println("숫자 입력>");
		int num2 = scan.nextInt();
		int result4 = maxNum(num1, num2);
		System.out.println(result4);
		
		System.out.println("숫자 입력>");
		int num3 = scan.nextInt();
		int result5 = abs(num3);
		System.out.println(result5);
		
		String str = java(5);
		System.out.println(str);
		
		String str2 = java(9);
		System.out.println(str2);
		
		System.out.println(sum(5));
		System.out.println(sum(6));
		
	}
	
	static void method1() {
		System.out.println("안녕");
	}
	
	static String method2(String str) {
		
		return str;
	}
	
	static double method3(int a, int b, double d) {
		
		return a + b + d;
	}
	
	static String method4(int a) {
		
		if(a % 2 == 0) {
			return "짝수";
		}else {
			return "홀수";
		}
		
	}
	
	static void method5(String str, int a) {
		for(int i = 0; i < a; i++ )
		{
			System.out.println(str);
		}
	}
	
	static int maxNum(int a, int b) {
		
		int max = a > b ?  a : b;
		
		return max;
		
	}
	
	static int abs(int a) {
		
		int abs = a >= 0 ? a : -a  ;
		
		return abs;
	}
	
	static String java(int a) {
		String str = "";
		
		for(int i = 1; i <= a; i++) {
			
			if(i % 2 == 0) {
				str += "바";
			}else {
				str += "자";
			}
		}
		
		return str; 
	}


	//n의 약수를 모두 더한 값을 리턴하는 함수
	static int sum(int a) {
		
		int sum = 0;
		for(int i = 1; i <= a; i++) {
			if(a % i == 0) {
				sum += i;
			}
		}
		
		return sum;
	}
	
	
}

Quiz 22 

method 1 전달 인자 x 반환 값 x 그냥 일반적인 프린트를 사용하는 void 타입의 메소드 

 

method 2 전달 인자 String 반환 값 String ,  String 타입의 변수를 받는 String 타입의 메소드 return도 String값이다.

 

method 3 전달 인자 int, int, double 반환 값 double, 정수형 타입 두개와 실수형 타입 하나를 받아 덧셈을 해주는 메소드

double형의 크기가 제일 크기 때문에 double 타입의 메소드 형성 및 반환 값 double로 return.

 

method 4 전달 인자 int, 반환 값 String , 정수형 타입을 매개변수로 받아 그 값이 짝수면 짝수 출력, 홀수면 홀수 출력을 하는 메소드, 실제 정수를 받아 짝수 인지 홀수 인지를 구분하여 String 타입을 반환해준다.

 

method 5 전달 인자 String, int 반환  값 String ,  문자와 숫자를 입력 받아 숫자만큼 문자를 반복해주는 메소드 실제 문자와 정수형 타입을 매개변수로 받아 값을 지정해주고 숫자만큼의 반복문을 돌려 문자를 계속 출력해준다.

 

maxNum 전달 인자 int int, 반환 값 int 두개의 숫자를 입력 받아 비교 후 더 큰 숫자를 반환하는 메소드, 

 

abs 전달 인자 int, 반환 값 int 정수를 입력 받아 그 수가 음수면 -를 붙여 양수로 만들어 주고, 양수일 경우 그냥 그대로 반환해주는 메소드, 실제 절대값을 만들어주는  Math.abs라는 메소드의 형식이지 않을 까 생각해본다.

 

java 전달 인자 int, 반환 값 String 정수를 입력 받아 입력 받은 수만큼 :"자바자바자바자바자바"를 반환해주는 메소드 만약 홀수일경우 "자"를 짝수일경우 "바"를 출력하는 조건문을 작성하여 원하는 만큼 출력이 되도록한다.

 

sum 전달 인자 int, 반환 값 int 정수를 입력 받아 입력받은 수의 약수의 합을 구하는 메소드이다.

입력 받은 수를 1 ~ 입력 받은 수 까지 반복문을 통하여 약수를 찾고 찾는 즉시 메소드 안에 형성된 int 값에 더해준다.

 

오늘은 보통 잘 사용하지 않았었던 method를 배웠다. 아직까지는 코드가 길지 않아 method 사용을 가끔 하였었는데, 이제는 코드 정리를 위해서라도 method를 사용하는 습관을 가져봐야겠다. 확실히 method를 사용하면 메인에서 코드를 확인하기에 매우 가시적이지만 처음 배웠을 때를 생각하면 함수안에서 변수를 사용하고 그 변수를 다시 메인에서 사용하고 이게 가능한지에대한 헷갈림과 혼동이 있었던 거 같다. 아마 오늘 배우신 분들이 같은 생각일 거 같아서 나도 조금 더 익숙해지기 위해서는 자주 활용을 하는 방법 밖에는 없는 것 같다,.

반응형

'JAVA' 카테고리의 다른 글

12일차 22.10.06  (0) 2022.10.06
11일차 22.10.05  (0) 2022.10.05
9일차 22.09.30  (0) 2022.09.30
8일차 22.09.29  (0) 2022.09.29
7일차 22.09.28  (0) 2022.09.28

댓글