빅데이터 서비스 교육/Java

Java 메소드

Manly 2022. 5. 3. 13:45
반응형

// main method
// -> JVM이 컴파일 (입력하는 코드를 컴퓨터가 알 수있게 바꿔서 전달: 컴파일)
// 컴파일때 가장먼저 main메소드를 찾아서 실행시킨다.

//메소드를 만들때는 main영역의 밖에

 

// 빼기 수행하는 메소드 / 리턴타입: int, 매개변수: int2개, 메소드명: subNum

public static int subNum(int n1,int n2) {
int result1 =0; //메소드 만들때 먼저 자료형 result 선언 후 return result;쓰고 시작
if(n1>=n2) {
 result1 = n1 - n2;
}else {
 result1 = n2- n1;
}
return result1;
}

//메소드 생성 : 리턴타입 double, 매개변수2개 각double, 메소드명 addDouble

public static double addDouble(double n1,double n2) {
//void는 리턴타입이 없음을 의미하는 키워드
//모든 로직은 리턴 전에 써야한다. -> 메소드는 리턴을 만나면 끝나기 때문에
double result = n1 + n2;

return result;
}

 

완전수 찾기 예제

// 완전수: 자기자신을 제외한 약수들의 합이 자기자신인 수
// 6의 약수:1,2,3,6 -> 자기자신을 제외한 약수들의 합이 자기자신인 수
// 메소드에 출력을 넣고 메인에서 함수만 쓰면 바로 출력할수 있는 -> void 리턴타입
// void타입은 return 값; (X) -> return; 이거나 그냥 안쓴다.

	public static void main(String[] args) {
		//출력등의 실행은 메인 메소드 안에서.
		getPerfectNumber(2,1000);
	}

	
//1) 약수 찾기 메소드
	public static boolean isDivisor(int num1, int num2) {
		// is라는 키워드가 붙은 메소드는 boolean 타입을 리턴
		boolean result = false;

		if (num1 % num2 == 0) {
			result = true;
		} else {
			result = false;
		}

		return result;
	}

	
	//getDivisor() 메소드를 구현해라
	  // 기능을 리턴하는 (출력하는) 메소드는 주로 void 타입이다
	
	//getDivisor(10); //10의 약수 : 1 2 5 10
	//getDivisor(16); //16의 약수 : 1 2 4 8 16	
	
	
//2) 약수 구하기 메소드
	public static void getDivisor(int num) {
		//num의 약수들을 구해줘서 출력.
		
		String result = "";
		result += num+"의 약수 : ";
		
		// : 옆에다가 약수를 달아준다.
		for (int i = 1; i <= num; i++) {
		// isDivisor(num,i) -> num을 i로 나누었을때 나누어 떨어지나?
	    // if문 안의 조건식도 num을 i로 나누었을때 나누어 떨어지나?
		if(isDivisor(num,i)==true) {
			//위의 1번 메소드를 활용해서. 
			result += i+" ";
			
		}
		}
						
		System.out.println(result);
	}
	
	
	
	//3) 약수의 합을 구하는 메소드
	public static int getSumOfDivisors(int num) {
		// 10의 약수의합 1 + 2 + 5 + 10 = 18
		int result = 0;
		for (int i = 1; i <= num; i++) {
			if(isDivisor(num,i)==true) {
				result += i;
			}
		}
				
		return result;
	}

	
	//4) 완전수인지 아닌지 판단해주는 메소드
	// 자기자신을 뺀 약수들의 합 == 자기자신인 수
//in num3 = 8196;
//boolean reslut2 = isPerfectNumber(num3);
	
	public static boolean isPerfectNumber(int num3) {
		boolean result = false;
		
		if((getSumOfDivisors(num3)-num3)==num3) {
			result =true;
		}
				
		return result;
	}
	
	//5) startValue~endValue까지의 숫자 중 완전수를 출력하는 getPerfectNumber()메소드를 구현해라
	
	public static void getPerfectNumber(int startValue,int endValue) {
		String result ="";
		for (int i = startValue; i <= endValue; i++) {
			if(isPerfectNumber(i)==true) {
				result += i+" ";
			
			}
		}
		
		System.out.println(result);
	}

 

 

메소드 오버로딩: 같은 클래스내에서 매개변수의 갯수나, 데이터 타입이 다르면
                               같은 이름으로 사용이 가능하다.
매개 변수 형태가 다르다면 메소드명이 같아도 괜찮다.
리턴타입이 다르다고 같은이름이 가능한건 아니다.

System.out.println() -> println이라는 동일한 메소드명으로 
                                   매개변수를 다르게 오버로딩으로 여태 썼다.

 

 

반응형

'빅데이터 서비스 교육 > Java' 카테고리의 다른 글

Java Arraylist  (0) 2022.05.06
Java OOP  (0) 2022.05.06
Java 배열  (0) 2022.05.03
Java 반복문  (0) 2022.05.02
Java 연산자, 조건문  (0) 2022.05.02