JAVA-07

이강민·2022년 3월 24일
0

웹 개발반 - JAVA

목록 보기
7/19
post-thumbnail
post-custom-banner

Java07

메소드

  • 이름 뒤에 소괄호
    단, 키워드 뒤에 () 는 메소드가 아니다.
    특정한 작업을 위한 로직을 따로 분리하여 관리하는 영역
	f		(x)	=	 2x	+	1
	메소드	매개		리턴값;
	이름		변수

메소드 구조

①리턴타입 ②메소드명(③자료형 매개변수, 자료형 매개변수...) {
		④호출 시 실행할 문장;
		⑤return 리턴값;
	}	

① return 뒤의 값에 타입에 맞는 자료형을 작성해준다. 리턴값이 없을 때는 void로 작성한다.
② 동사형으로 작성한다.ex) eat("밥") caculate(2,3);
③ 생략가능, 하지만 생략시에는 외부(사용하는 곳)에서 값을 전달 받을 수 없고, 여러 값들을 전달받아야 할 때에는 ,로 구분하여 값의 갯수 만큼 선언해준다.
④ 생략가능
⑤ 생략가능

메소드 선언 순서

(두 정수의 덧셈 메소드)
1. 메소드 명을 생각한다. (리턴 타입은 결정 전임으로 void)

void add(){

}
  1. 매개변수를 생각한다.
void add (int num1, int num2){

}
  1. 실행할 문장을 생각한다.
void add (int num1, int num2){
	System.out.println("두 정수의 덧셈 메소드");
    int result = num1 + num2;
}
  1. 리턴 값을 생각한다.
void add(int num1, int num2){
	System.out.println("두 정수의 덧셈 메소드");
    int result = num1 + num2;
    return result;
 }
  1. 리턴타입을 수정한다.
int add(int num1, int num2){
	System.out.println("두 정수의 덧셈 메소드");
    int result = num1 + num2;
    return result;
 }

메소드 사용

메소드는 클래스 내부에 있으므로 그 메소드가 속해있는 클래스 타입으로 먼저 변수를 만들어 주어야 한다.

package day07;

public class MethodTest {
//	메인 메소드에서 클래스 타입으로 변수를 만들어준다.(클래스 초기화)
		public static void main(String[] args) {
		MethodTest m = new MethodTest();
        //1+2메소드 값은 3을 리턴, 통째로 값임으로 아래와 같이 출력
       System.out.println(m.add(1,2)); 
        
	}
//다른 메소드를 정의한다.
 int add(int num1, int num2){
	System.out.println("두 정수의 덧셈 메소드");
    int result = num1 + num2;
    return result;
 }

}

클래스명 변수명 = new 클래스명();

변수.메소드명(값1, 값2....) // 매개변수의 개수와 타입에 맞게 값을 넘겨준다.
변수.메소드명() // 매개변수가 없다면 그대로 이름으로 사용

메소드 사용 부분은 선언부 마지막에 return 값이 있다면 사용한 부분 통째로 그 리턴값으로 보아야 한다. 단, return 값이 없다면 절대 값으로 봐서는 안된다.

리턴을 사용해야 할 때

  • 메소드 내부에 모든 기능이 구현되지 않을 때
  • 사용하는 부분에서 아직 할 작업이 남았을 때
  • 메소드 기능의 결과를 사용하는 부분에 알려주어야 할 때

리턴을 사용하지 않아도 될 때

  • 메소드 내부에서 출력까지 모든 기능이 구현될 때

메소드 관련 문제

메인 메소드에서 메소드 사용은 생략

1 ~ 10까지 출력

void printNum() {
		for (int i = 1; i <= 10; i++) {
			System.out.println(i);
		}
	}

1 ~ n 까지 합하는 메소드

int sumNum2(int n) {
		int result = 0;
		for (int i = 1; i <= n; i++) {
			result += i;
		}
		return (result);
	}

두 정수의 나눗셈 결과를 구해주는 메소드

float divide(int num1, int num2) {
		float result = (float)num1 / num2;
		return result;
	}

어떤 문자열을 n번 만큼 출력하는 메소드

void printString(int n) {
		for (int i = 0; i < n; i++) {
			System.out.println("자바를 공부하자!");
		}
	}

n부터 m까지의 합 구해주는 메소드

int sumOrderNum(int n, int m) {
		int result = 0;
		if(n > m) {
			System.out.println("첫 번째 매개변수는 두 번째 매개변수보다 작아야 합니다.");			
		}else {
			for (int i = n; i <= m ; i++) {
				result += i;
			}
		}
		return (result);
	}

문자열을 전부 대문자로 바꿔주는 메소드 ("HelLo~" -> "HELLO~")

String makeUpper2(String str) {
		String result = "";
//		받은 문자열 길이만큼 배열을 돌면서 새로운 변수에 값을 넣어 대문자를 완성한다.
		for (int i = 0; i < str.length(); i++) {
//			만약 해당 문자가 아스키 코드의 값보다 크다는 것은 소문자라는 것임.
			if(str.charAt(i) >= 97) {
//				해당 소문자를 대문자 코드 10진수까지 감소시켜서 문자열로 형변환해서 값에다가 담는다.
				result += (char)(str.charAt(i) - 32);
			}else {
//				그 외는 원래 대문자라서 그냥 담는다.
				result += str.charAt(i);				
			}
		}
		return result;
	}

문자열을 거꾸로 바꿔주는 메소드 ("Hello" -> "olloH")

String makeReserve2(String str) {
//		결과를 담을 변수를 만든다.
		String result = "";
//		문자열의 길이만큼 반복을 시킨다.
		for (int i = 0; i < str.length(); i++) {
//			결과는 해당 문자열의 자리를 아래와 같이 길이의-1-i를 하면 거꾸로 담긴다. 
			result+= str.charAt(str.length()-1-i);
		}
		return result;
	}

문자열이 숫자로 이루어져 있는지 검사하는 메소드("H312" -> false / "112133" -> true)

boolean checkStr2 (String str) {
//		매개변수와 받은 문자열과 비교할 문자열 변수를 만든다.
		String dumiNum = "";
//		매개변수의 문자열만큼 반복을 시킨다.
		for (int i = 0; i < str.length(); i++) {
//			이 문자열이 숫자로 이루어진 부분만 추출하여 비교할 문자열에 넣는다.
			if(str.charAt(i) >= 48 && str.charAt(i) <= 57) {
				dumiNum += str.charAt(i);
			}
		}
//		추출한 문자열과 매개변수의 문자열을 비교한다., 참이면 true를 거짓이면 false를 리턴한다.
		return dumiNum.equals(str) ? true : false;

문자열의 소문자는 대문자로, 대문자는 소문자로 바꿔주는 메소드

String makeUpperLower2(String str) {
		String result = "";
//		받은 문자열 길이만큼 배열을 돌면서 새로운 변수에 값을 넣어 대문자를 완성한다.
		for (int i = 0; i < str.length(); i++) {
//			만약 해당 문자가 아스키 코드의 값보다 크다는 것은 소문자라는 것임.
			if(str.charAt(i) >= 97) {
//				해당 소문자를 대문자 코드 10진수까지 감소시켜서 문자열로 형변환해서 값에다가 담는다.
				result += (char)(str.charAt(i) - 32);
			}else {
//				대문자들은 소문자로 바꿔 준다.
				result += (char)(str.charAt(i) + 32);
			}
		}
		return result;
	}

정수를 한글로 바꿔주는 메소드(12023 -> "일이공이삼")

String makeHangle2(int num) {
		String [] hangle = {"공","일","이","삼","사","오","육","칠","팔","구"};
		String numToStr = num + "";
		String result = "";
		for (int i = 0; i < numToStr.length(); i++) {
//			charAt은 char 타입임으로 문자열로 바꿔주기 위해서 ""을 더한다.(자동형변환);
			result += hangle[Integer.parseInt(numToStr.charAt(i)+"")];
		}
		return result;
	}
profile
NullpointException
post-custom-banner

0개의 댓글