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(50, 60, 80, 60, 54, 60);
System.out.println("입력값중 큰 값은 " + c + "입니다");
c = max(50, 60, 80, 60, 54, 60, 56, 87, 69);
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", 78, 25, 56, 32, 45, 78, 98); //오름차순
System.out.println();
sort( "desc", 87, 75, 23, 65, 45, 8, 56, 98, 78, 12); //내림차순
}
//같은형의 갯수가 정해지지 않은 전달인수와 다른 자료형의 전달인수가 동시에
//전달되어야 한다면, 반드시 ...으로 처리할 데이터들보다 왼쪽에 전달되게
//위치시킵니다.
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 |
-같은형의 갯수가 정해지지 않은 전달인수와 다른 자료형의 전달인수가 동시에
전달되어야 한다면, 반드시 ...으로 처리할 데이터들보다 왼쪽에 전달되게 위치시킨다.