package kr.or.didt.basic.argtest;
public class ArgsTest {
/*
* 매개변수로 여러개의 정수들을 받아서
* 이 정수들의 합계를 구하는 메서드
* (이 정수들의 개수는 상황에 따라 다르다.)
*
*/
public int sumArr(int[] data){
int sum = 0;
for (int i = 0; i < data.length; i++) {
sum += data[i];
}
return sum;
}
//가변형 인수 => 메서드의 인수값의 개수가 메서드를 호출할 때마다
// 다를 때 사용한다.
// - 가변형 변수는 메서드 안에서는 배열로 처리된다.
// - 가변형 변수는 한가지 자료형만 사용할 수 있다.(int...data, String) -> 이렇게 여러게 못씀
//가변형 인수를 이용한 메서드
public int sumArg(int...data){
//...으로 자료형과 변수명을 이어줌(자료형 인수를 받을수 있는 변수라는 뜻)
int sum = 0;
for (int i = 0; i < data.length; i++) {
sum += data[i];
}
return sum;
}
// 가변형 변수와 일반적인 매개변수를 혼합해서 사용할 수 있다.
// 단, 이 때는 가변형 변수를 제일 뒤쪽에 배치한다.
public String sumArg2(String name, int...data){
//(int...data, String name): 순서 바뀌면 오류남
int sum = 0;
for (int i = 0; i < data.length; i++) {
sum += data[i];
}
return name + "씨 총점 : "+sum;
}
// (메서드에서 매개변수가 하는일: 넘겨주고 싶은 데이터를 담아주는 역할을함
// public void test(int a, int b){
//
// }
public static void main(String[] args) {
ArgsTest t = new ArgsTest();
// t.test(100, 200);
// 인수값 -> 매개변수에 순서대로 들어갈 값, 매개 변수가 두개인데 하나이거나 더 많이 주면 오류가 뜸
int[] nums = {100, 200, 300};
//배열 안에 값을 넣어줘야 계산 가능
// int[] nums2;//변수 만들고
// nums2 = {1,2,3,4,5};
//초기화 / 얘는 왜 안될까? 변수를 만들어놓고 나중에 초기화하는 것 안됨
// nums2 = new int[]{1,2,3,4,5};//맞는 표현
System.out.println("합계 : "+t.sumArr(nums)); //nums배열 넘겨주기
System.out.println("합계 : "+t.sumArr(new int[]{100, 200, 300}));
//1,2,3,4,5를 갖는 배열(배열 초기화해서 넣기)
System.out.println();
System.out.println("가변형 합계: "+t.sumArg(100,200,300));
// 100,200,300자체가 data를 의미
System.out.println("가변형 합계: "+t.sumArg(1,2,3,4,5));
System.out.println(t.sumArg2("홍길동", 1,2,3,4,5,6,7,8));
//1~8까지의 합계가 들어감
}
}