Java

[Java] Method 메서드 ( 오버로딩 overloading / 매개변수 / 가변인자 ) + 응용

소댓 2023. 3. 13. 18:54

*  메서드의 오버로딩

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package day08;
 
public class MethodEx5 {
    static int plus(int a, int b) {
        
        return a+b;
    }
    
    static float plus(float a, int b) {
        
        return a+b;
    }
 
    static String plus(String a, String b) {
        
        return a+b;
        
    }
    
    // method overloading
    
    public static void main(String[] args) {
        int a = 100;
        int b = 200;
        
        int result1 = plus(a, b);
 
        System.out.println("a : "+a);
        System.out.println("result1 : "+result1);
        
        float result2 = plus(100.0f, b);
        System.out.println("result2 : "+result2);
        
        String result3 = plus("오늘은"" 월요일");
        System.out.println("result3 : "+result3);
    }
 
    
}
cs

 

 

* 메서드 - 매개변수 / 가변인자

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package day08;
 
public class MethodEx6 {
    // 가변인자 -> 인자의 갯수가 변하는
    // 가변인자를 지원
    
    static int avg(int ... data) {
        int sum = 0;
        
        // 매개변수의 data의 길이만큼 반복
        for(int i=0; i<data.length; i++) {
            sum += data[i];
        }
        
        return sum/data.length// 누적합/갯수
    }
    
    
//    static int avg(int a, int b) {
//        return (a+b)/2;
//    }
//    
//    static int avg(int a, int b, int c) {
//        return (a+b+c)/3;
//    }
//    
//    static int avg(int a, int b, int c, int d) {
//        return (a+b+c+d)/4;
//    }
    
    public static void main(String[] args) {
 
        int result1 = avg(100200);
        int result2 = avg(100200300);
        int result3 = avg(100200300400);
        int result4 = avg(100200300400500600700);
    
        System.out.println("result1 : " + result1);
        System.out.println("result2 : " + result2);
        System.out.println("result3 : " + result3);
        System.out.println("result4 : " + result4);
    }
 
}
cs

 

 

 

[ 메서드 응용 ]

 

 

 

1. 컴퓨터가 생성한 100사이의 랜덤한 숫자를 맞추기

1. 100사이의 랜덤한 값을 생성한다.

2. 사용자가 값을 입력한다.

3. 안 맞다면 더 큰수 인지 작은수 인지 메세지 출력

4. 맞다면 성공 메세지 출력 후 종료

5. 안맞다면 2번으로 돌아간다.

​ex)

1부터 100사이의정수를 맞춰보세요

입력:76

땡! 좀더 작은수를 입력해보세요

입력:74

땡! 좀 더 큰 수를 입력해보세요

입력:75

정답.. 3번만에 성공하셨어요..

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package day08quiz;
import java.util.Scanner;
// auto import : ctrl+shift+o
public class Day8Q1 {
    
    public static void main(String[] args) {
        
        int com = (int)(Math.random()*100)+1// 1~100
        
        System.out.println("컴퓨터가 뽑은 수 : " + com);
 
        System.out.println("1부터 100 사이의 정수를 맞춰보세요");
 
        
        Scanner sc = new Scanner(System.in);
        
        int cnt = 0;
        
        boolean isDDang = true;
        while (isDDang) {
            System.out.println("입력 : ");
            cnt++;
        int user = sc.nextInt();
        
        if(user != com) {
            if (user > com) {
                System.out.println("땡! 좀 더 작은 수를 입력해보세요");
            } else {
                System.out.println("땡! 좀 더 큰 수를 입력해보세요");
            } 
        } else {
            isDDang = false;
            System.out.println("정답.. " + cnt+ "번 만에 성공하셨어요");
        }
        }
    }
 
}
 
cs

 

 

2. 세계 최초의 암호화

1. 사용자로부터 단어를 입력받는다. 입력:A

2. 3번째 뒤에 글자를 출력한다.

예) A ==> D

C ==> F

B ==> E

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package day08quiz;
import java.io.IOException;
public class Day8Q2 {
 
    public static void main(String[] args) throws IOException {
        
    // 1. 사용자로부터 단어를 입력받는다.
        
        System.out.println("입력하세요 : ");
//        Scanner sc = new Scanner(System.in);
//        
//        String msg = sc.next();
//        
//        System.out.println("msg : "+msg);
    
        int code = System.in.read();
        
        int result = code + 3;
        
    // 2. 3번째 뒤에 글자를 출력한다.
        
        System.out.println((char)code + " => " + (char)result);
        
    
    }
    
}
 
cs

 

 

3.

score 배열에 국어 , 영어 , 수학 점수가 들어있다.

총점과 평균을 계산해서 배열에 담은 후 모든

학생의 국어, 영어, 수학, 총점, 평균을 출력하시오

참고) 배열에는 국어, 영어 수학 점수만 들어있다.

int[][] score = {

{80,80,80,0,0},

{60,50,80,0,0},

{50,90,90,0,0},

{40,50,60,0,0},

{90,90,95,0,0},

{85,95,100,0,0},

};

(4번째 총점 , 5번째값은 평균) 구한후에

화면에 출력

국어 : XX 영어 XX 수학: XX 총점 : XXX 평균 XXX

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package day08quiz;
 
public class Day8Q3 {
 
    public static void main(String[] args) {
 
        
    int[][] score = {
 
        {80,80,80,0,0},
        {60,50,80,0,0},
        {50,90,90,0,0},
        {40,50,60,0,0},
        {90,90,95,0,0},
        {85,95,100,0,0},
        };
    
    for(int i =0; i<score.length; i++) {
    score[i][3= score[i][0+ score[i][1+ score[i][2];
    score[i][4= score[i][3]/3;
    System.out.println("국어 : "+score[i][0]+" 영어 : "+score[i][1]
            +" 수학 : "+score[i][2]+" 총점 : "+score[i][3]+" 평균 : "+score[i][4]);
    }
    
    System.out.println("-------------------------------------");
    
    for(int i=0; i<score.length; i++) {
        for(int j = 0; j<score[0].length; j++) {
            System.out.print(score[i][j] + "\t");
        }
        System.out.println();
        }
        
    }
 
}
 
cs