JAVA/수업 복습

자바 공부기록 31 - 메소드 매개변수 - int...a

본이qq 2022. 4. 21. 18:00

●전달인수의 갯수가 일정치 않아서 오버로딩으로는 해결할 수 없을 때

 

1
2
3
4
5
6
7
8
public static void main(String[] args) { 
        
        int c;
        c = max(506080605460);
        System.out.println("입력값중 큰 값은 " + c + "입니다");
        c = max(506080605460568769);
        System.out.println("입력값중 큰 값은 " + c + "입니다");
    }
cs

위와 같이 전달인수의 개수를 예상할 수 없을때 (전달인수가 50개일수도, 100개일수도 있으니까)

1
2
3
4
5
6
7
public static int max( int ... a) {
        
        int max =a[0];
        for(int i=1; i<a.length; i++)
            if(max < a[i]) max = a[i];
        return max;
        }
cs

-> 그렇다면 매개변수를 int ...a(변수명) 으로 해주면 된다.

     전달되는 전달인수 갯수만큼의 배열이 생성되고 그 배열에 전달인수가 저장된다.

 

 

 

 

●매개변수의 첫번째 값에 요청하고 싶은 계산을 넣는 예제 (ex.오름차순,내림차순)

 

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
45
46
47
package days19;
 
public class Method16 {
 
    public static void main(String[] args) {
        sort( "asc"78255632457898); //오름차순
        System.out.println();
        sort( "desc"8775236545856987812);  //내림차순
 
    }
    //같은형의 갯수가 정해지지 않은 전달인수와 다른 자료형의 전달인수가 동시에
    //전달되어야 한다면, 반드시 ...으로 처리할 데이터들보다 왼쪽에 전달되게
    //위치시킵니다.
    public static void sort(String as,int ...a) {
    
        if(as.equals("asc")) {
            for(int i=0; i<a.length; i++) {
                for(int j=i+1; j<a.length; j++) {
                    if(a[i]>a[j]) { 
                        int temp = a[i];
                        a[i] = a[j];
                        a[j] = temp;
                    }
                    }
            }
            for(int i=0; i<a.length; i++System.out.printf("%d ", a[i]);
           
            }
        else if(as.equals("desc")) {
            for(int i=0; i<a.length; i++) {
                for(int j=i+1; j<a.length; j++) {
                    if(a[i]<a[j]) { 
                        int temp = a[i];
                        a[i] = a[j];
                        a[j] = temp;
                    }
                    }
            }
             for(int k : a)System.out.printf("%d ", k);
            }
     }
 
}
 
cs
-같은형의 갯수가 정해지지 않은 전달인수와 다른 자료형의 전달인수가 동시에
전달되어야 한다면, 반드시 ...으로 처리할 데이터들보다 왼쪽에 전달되게 위치시킨다.