SQLD, ECLIPS, JAVA,PYTHON, NODE....

[Eclips] Java Class 5 - 매개변수, 오버로딩, 메소드 문제 및 정답 본문

Java

[Eclips] Java Class 5 - 매개변수, 오버로딩, 메소드 문제 및 정답

D_Aiden 2023. 12. 13. 12:10
728x90
반응형
SMALL

2023.12.13

(문제) 1개의 클래스 내부에 다음에 제시된 10개의 메소드를 정의하고 메인 메소드를 이용해서 실행코드를 작성하시오.
(단, 중복 모듈 분리를 위한 메소드 추가는 허용한다)

 [클래스명 : ControlFunc]

1. 정수형 데이터(int) 2개를 매개변수로 받아서 덧셈 연산을 수행하여 모니터로 결과를 출력하는 메소드
0. 식별자 : add
1. 파라미터(input) : 정수형 데이터 2개를 받는다
2. 메소드 바디 : 덧셈 연산 결과값을 모니터로 출력한다(표준 출력 메소드)
3. 출력 데이터(output) : 없음

2. 정수형 데이터(byte) 2개를 매개변수로 받아서 덧셈 연산을 수행하여 결과값을 반환하는 메소드
0. 식별자 : add
1. 파라미터(input) : 정수형 데이터 2개를 받는다
2. 메소드 바디 : 덧셈 연산 결과값을 정수형 변수에 저장한다
3. 출력 데이터(output) : 결과값을 출력한다

3. 정수형 데이터(int) 2개를 매개변수로 받아서 뺄셈 연산을 수행하여 결과값을 반환하는 메소드
0. 식별자 : sub
1. 파라미터(input) : 정수형 데이터 2개를 받는다
2. 메소드 바디 : (큰수-작은수)의 뺄셈 연산의 결과값을 변수에 저장한다
3. 출력 데이터(output) : 결과값을 출력한다

4. 정수형 데이터 1개를 매개변수로 받아서 해당되는 문자열(인사말)을 모니터로 출력하는 메소드
0. 식별자 : select
1. 파라미터(input) : 정수형 데이터 1개를 받는다
2. 메소드 바디 : 입력 받은 데이터의 값에 따라 4종류의 문자열을 표준 출력한다
    (1-굿모닝, 2-굿애프터눈, 3-굿이브닝, 4-방가방가)
3. 출력 데이터(output) : 없음

5. 문자 데이터 1개를 매개변수로 받아서 해당되는 문자열(과일이름)을 모니터로 출력하는 메소드
0. 식별자 : select
1. 파라미터(input) : 문자 데이터 1개를 받는다
2. 메소드 바디 : 입력 받은 데이터의 값에 따라 (대소문자 구분없이) 4종류의 문자열을 표준 출력한다   
    (a-사과, b-배, c-포도, 기타-과일)
3. 출력 데이터(output) : 없음

6. 반복 출력할 횟수를 매개변수로 받아서 지정된 문장을 모니터로 출력하고, 출력된 횟수를 반환하는 메소드
0. 식별자 : hello
1. 파라미터(input) : 반복 횟수
2. 메소드 바디 : 반복 횟수만큼 “안녕하세요~”라는 문장을 표준 출력한다.(단, for문 사용)
3. 출력 데이터(output) : 반복횟수를 출력한다

7. 반복 출력할 횟수와 문자열 내용을 매개변수로 받아서 내용을 모니터로 출력하고, 출력된 횟수를 반환하는 메소드
0. 식별자 : hello
1. 파라미터(input) : 반복 횟수, 출력할 문자열
2. 메소드 바디 : 입력받은 문장을 반복 횟수만큼 표준 출력한다.(단, while문 사용)
3. 출력 데이터(output) : 반복횟수를 출력한다

8. 문자형 배열을 매개변수로 받아서 지정된 배열을 모니터로 출력하고, 배열의 사이즈를 반환하는 메소드
0. 식별자 : hello
1. 파라미터(input) : 출력할 문자열이 저장된 배열
2. 메소드 바디 : 입력받은 문자열의 내용을 표준 출력한다.(단, 향상된 for문 사용)
3. 출력 데이터(output) : 배열 사이즈를 출력한다

9. 실수형 데이터 2개를 매개변수로 받아서 원이 넓이를 계산한 결과값을 반환하는 메소드
0. 식별자 : count
1. 파라미터(input) : 원의 반지름, 파이값 (단, 음수 데이터는 입력할 수 없다)
2. 메소드 바디 : 원의 넓이를 계산한 결과값을 변수에 저장한다
3. 출력 데이터(output) : 결과값을 출력한다 (음수 데이터 입력오류의 경우 -1을 출력한다)

10. 정수형 데이터 2개를 매개변수로 받아서 사각형의 넓이를 계산한 결과값을 반환하는 메소드
0. 식별자 : count
1. 파라미터(input) : 가로 길이, 세로 길이 (단, 음수 데이터는 입력할 수 없다)
2. 메소드 바디 : 사각형의 넓이를 계산한 결과값을 변수에 저장한다
3. 출력 데이터(output) : 결과값을 출력한다 (음수 데이터 입력오류의 경우 -1을 출력한다)

 (답안1)


public class ControlFunc {
	
   public static void main(String[] args) {

      ControlFunc s = new ControlFunc();
// 1. 정수형 데이터(int) 2개를 매개변수로 받아서 덧셈 연산을 수행하여 모니터로 결과를 출력하는 메소드
      s.add(8,9);
// 2. 정수형 데이터(byte) 2개를 매개변수로 받아서 덧셈 연산을 수행하여 결과값을 반환하는 메소드
      System.out.println("2번문제 : " + s.add((byte)7, (byte)5));
// 3. 정수형 데이터(int) 2개를 매개변수로 받아서 뺄셈 연산을 수행하여 결과값을 반환하는 메소드
      System.out.println("3번문제 : " + s.sub(12, 15));      
// 4. 정수형 데이터 1개를 매개변수로 받아서 해당되는 문자열(인사말)을 모니터로 출력하는 메소드
      System.out.println("4번문제 :");
      s.select(1);      
// 5. 문자 데이터 1개를 매개변수로 받아서 해당되는 문자열(과일이름)을 모니터로 출력하는 메소드
      System.out.println("5번문제 :");
      s.select('C');      
// 6. 반복 출력할 횟수를 매개변수로 받아서 지정된 문장을 모니터로 출력하고, 출력된 횟수를 반환하는 메소드
      System.out.println("6번문제 :");
      System.out.println("반복횟수 : " + s.hello(4));      
 // 7. 반복 출력할 횟수와 문자열 내용을 매개변수로 받아서 내용을 모니터로 출력하고, 출력된 횟수를 반환하는 메소드
      System.out.println("7번문제 :");
      System.out.println("출력횟수 : " + s.hello(5,"Java"));      
// 8. 문자형 배열을 매개변수로 받아서 지정된 배열을 모니터로 출력하고, 배열의 사이즈를 반환하는 메소드
      System.out.println("8번문제 :");
      char[] str = new char[5];
      str[0] = 'A';
      str[1] = 'B';
      str[2] = 'C';
      str[3] = 'D';
      str[4] = 'E';
      System.out.println("배열의크기 : " + s.hello(str));
// 9. 실수형 데이터 2개를 매개변수로 받아서 원이 넓이를 계산한 결과값을 반환하는 메소드
      System.out.println("9번문제");
      System.out.println("원의 넓이는 " + s.count(5.7, 5.7) + " 입니다.");
// 10. 정수형 데이터 2개를 매개변수로 받아서 사각형의 넓이를 계산한 결과값을 반환하는 메소드
      System.out.println("10번문제");
      System.out.println("사각형의 넓이는 " + s.count(5,7) + " 입니다.");
}
// 메소드 선언부
//1번
   void add(int a, int b) {
      System.out.println("1번문제 : " + (a+b));
   }
//2번
   int add(byte a, byte b) {
      int res = a + b; return res;
   }
//3번
   int sub(int a, int b) {
      int res = 0;
      if(a > b) {
         res =  a - b;
      } else {
         res = b - a;
      }
      return res;
   }
//4번
   void select(int a) {
      switch(a){
      case 1 : System.out.println("굿모닝");
      	break;
      case 2 : System.out.println("굿애프터눈"); 
      	break;
      case 3 : System.out.println("굿이브닝");
      	break;
      case 4 : System.out.println("방가방가"); 
      	break;
      default : System.out.println("번호를 확인 해주세요");
      }
   }
//5번
   void select(char a) {
      char code = ('A'<a && 'Z'>a) ? (char)(a+32) : a;
      switch(code){
      case 'a' : System.out.println("사과"); break;
      case 'b' : System.out.println("배"); break;
      case 'c' : System.out.println("포도"); break;
      default : System.out.println("과일"); break;
      }
   }
 //6번
   int hello(int a) {
      int count = 0;
      for(int i=0; i<a; i++) {
         count ++;
         System.out.println("안녕하세요~");
      }
      return count;
   }
   
 //7번
   int hello(int a, String b) {
      int count = 0;
      while(count <= a) {
         count ++;
         System.out.println(b);
      }
      return count;
   }
 //8번
   int hello(char[] a) {
      int count = 0;
      for (char i : a) {
         count ++;
         System.out.println(i);
      }
      return a.length;      
   }
//9번
   double count(double a, double b) {
      double res = (a * b) * 3.14;
      return res;
   }
//10번
   int count(int a, int b) {
      int res = a * b;
      return res;
   }
}

 

(강사 답안)

답안 1)
class ControlFunc1{
	public static void main(String[] args) 
	{
		byte b=3,c=4,d;
		int result,cnt;
		double s;
		char[] str=new char[3];
		str[0]='홍';
		str[1]='동';
		str[2]='우';

		System.out.println("1번");
		add(3,5);
		
		System.out.println("2번");
		d=add(b,c);
		//System.out.println(d);
		print(d);

		System.out.println("3번");
		result=sub(3,5);
		//System.out.println(result);
		print(result);
		
		System.out.println("4번");
		select(1);
		
		System.out.println("5번");
		select('a');
		
		System.out.println("6번");
		cnt=hello(5);
		//System.out.println(cnt);
		print(cnt);

		System.out.println("7번");
		cnt=hello(5,"홍동우");
		//System.out.println(cnt);
		print(cnt);
		
		System.out.println("8번");
		cnt=hello(str);
		//System.out.println(cnt);
		print(cnt);

		System.out.println("9번");
		s=count(1.0,3.14);
		System.out.println(s);

		System.out.println("10번");
		result=count(4,5);
		//System.out.println(result);
		print(result);
	}
// *********************************************************************//
	//1
	public static void add(int num1,int num2){
		int sum;
		sum=num1+num2;
		System.out.println(sum);
	}
	//2
	public static byte add(byte num1,byte num2){
//		byte sum = (byte)(num1+num2);					// int보다 좁은 범위의 타입이 무조건 int 타입으로 변환(JVM이 기본적으로 32비트 단위의 정수 계산을 하므로!!)
		int sum;										// (JVM이 기본적으로 32비트 단위의 정수 계산을 하므로!!)
		sum=num1+num2;
		return (byte)sum;
//		return sum;
	}
	//3
	public static int sub(int num1,int num2){
		int result;
		if(num1>num2){
			result=num1-num2;
		}
		else{
			result=num2-num1;
		}
		return result;
	}
	//4
	public static void select(int num1){
		switch(num1){
			case 1: System.out.println("굿모닝");
					break;
			case 2: System.out.println("굿애프터눈");
					break;
			case 3: System.out.println("굿이브닝");
					break;
			case 4: System.out.println("방가방가");
					break;
			default : System.out.println("입력 문자열 없음.");
		}
	}
	//5
	public static void select(char ch){
		switch(ch){
			case 'A':
			case 'a': System.out.println("사과");
					break;
			case 'P':
			case 'p': System.out.println("배");
					break;
			case 'G':
			case 'g': System.out.println("포도");
					break;
			default : System.out.println("과일");
		}
	}
	//6
	public static int hello(int cnt){
		for(int i=0;i<cnt;i++){
			System.out.println("안녕하세요~");
		}
		return cnt;
	}
	//7
	public static int hello(int cnt,String str){
		int i=0;
		while(i<cnt){
			System.out.println(str);
			i++;
		}
		return cnt;
	}
	//8
	public static int hello(char[] str){
		/*
		for(int i=0;i<str.length;i++){
			System.out.print(str[i]);
		}
		*/
		for(char ch:str){
			System.out.print(ch);
		}
		System.out.println();
		return str.length;		// [문자열배열.length]형태!
	}
	//9
	public static double count(double r,double pi){
		double s;
		if(r<0){return -1;}
//			return -1.0f;				//-1.0으로 쓰게되면 기본 double형으로 인식한다! -1은 자동변환되어 들어가므로 오류없다!
		s=r*r*pi;
		return s;	

	}
	//10
	public static int count(int a,int b){
		int s;
		if(a<0 || b<0){return -1;}
		s=a*b;
		return s;	
	}
	
	public static void print(int a){  //중복모듈 분리 메소드(정수형 데이타 출력)
		System.out.println(a);	
	}
}

답안2)
class ControlFunc2 {

	public static void main(String[] args) 
	{
//		add(10,20);
	}

//1.
	public static void add(int i, int j) {
		System.out.println(i+j);
	}

//2.
	public static byte add(byte i, byte j) {
		byte sum = (byte)(i+j);					// int보다 좁은 범위의 타입이 무조건 int 타입으로 변환(JVM이 기본적으로 32비트 단위의 정수 계산을 하므로!!)
		System.out.println(sum);
		return sum;
	}

//3.
	public static int sub(int i, int j) {
		int res = 0;
		if (i<=j) 
			res = j-i;
		else
			res = i-j;
		
		System.out.println(res);
		return res;
	}

//4.
	public static void select(int var) {
		switch (var)
		{
		case 1 :
			System.out.println("굿모닝");
			break;
		case 2 :
			System.out.println("굿에프터눈");
			break;
		case 3 :
			System.out.println("굿이브닝");
			break;
		case 4 :
			System.out.println("방가방가");
			break;
		}
	}

//5.
	public static void select(char var) {
//		switch (lower(var))					
		switch (var)
		{
		case 'a' :
			System.out.println("사과");
			break;
		case 'p' :
			System.out.println("배");
			break;
		case 'g' :
			System.out.println("포도");
			break;
		default :
			System.out.println("과일");
			break;
		}
	}

//6. 
	public static int hello(int cnt) {
		for (int i=1 ; i<cnt+1 ; i++)
		{
			System.out.println("안녕하세요~~!");
		}
			return cnt;
	}

//7. 
	public static int hello(int cnt, String[] str) {
		for (int i=1 ; i<cnt+1 ; i++)
		{
			System.out.println(str);
		}
			return cnt;
	}

//8.
	public static int hello(String[] str) {
		int arrsize = 0;
		for (String temp : str)
		{
			System.out.println(temp);
			System.out.println(str.length);		 // [문자열 배열.length]형태!
			arrsize = str.length;
		}
		return arrsize;
    }

//9. 
	public static float count(float r, float pi) {
		if (r>0)
		{
			float width = 0;
			width = r * r * pi;
			System.out.println(width);
			return width;
		}
//		System.out.println(-1);
//		return null;				// 메소드에 리턴 값(타입)이 있으므로 조건에 만족하지 않아도 null값이라도 return해야 한다!!

		return -1;
//		return -1.0f;				//-1.0으로 쓰게되면 기본 double형으로 인식한다! -1은 자동변환되어 들어가므로 오류없다!
	}

//10.
	public static float count(int wl, int hl) {
		if (wl>0)
		{
			float width = 0;
			width = wl * hl;
			System.out.println(width);
			return width;
		}
//		System.out.println(-1);
//		return null;

		return -1;
	}
}


 

(해석)

1번문제 : 17
2번문제 : 12
3번문제 : 3
4번문제
굿모닝
5번문제
포도
6번문제
안녕하세요~
안녕하세요~
안녕하세요~
안녕하세요~
반복횟수 : 4
7번문제
Java
Java
Java
Java
Java
Java
출력횟수 : 6
8번문제
A
B
C
D
E
배열의크기 : 5
9번문제
원의 넓이는 102.0186 입니다.
10번문제
사각형의 넓이는 35 입니다.


728x90
반응형
LIST