반응형
4.4 다음 두 개의 static 메소드를 가진 ArrayUtility2 클래스를 만들어보자. ArrayUtility2 클래스를 이용하는 테스트용 프로그램도 함께 작성하라.
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 HW1_JAVA; class ArrayUtility2{//s1과 s2를 연결한 새로운 배열 리턴 static int[] concat(int s1[], int s2[]){ //int형배열을 리턴으로하는 메소드 concat(인자 int형배열 2개) int conc[]=new int[s1.length+s2.length]; //s1과 s2 길이를 더한 길이를 갖는 인트형 배열 conc int i; //int 형 변수 i 선언 for(i=0;i<conc.length;i++) //i=0부터 conc의 길이보다 작을 때까지 반복 { if(i<=4) //i가 4 이하이면 conc[i]에 s1[i] 대입 conc[i]=s1[i]; else //i가 5이상이면 conc[i]에 s2[i-5] 대입 conc[i]=s2[i-5]; } return conc;} //conc 배열 리턴 static int[] remove(int s1[], int s2[]){ //s1에서 s2 배열의 숫자를 모두 삭제한 새로운 배열 리턴 int i; int j; //인트형 변수 i,j 선언 int s3[]=new int[s1.length]; //s1.length의 길이를 갖는 배열 s3 선언 LABEL : for(i=0;i<s1.length;i++) //i는 0부터 s1.length 미만까지 반복 { for(j=0;j<s2.length;j++) //j는 0부터 s2.length 미만까지 반복 { if(s1[i]==s2[j]) //s1[i]와 s2[j]가 같으면 루프 중단 후 LABEL로 점프(증가식은 진행됨) continue LABEL; } s3[i]=s1[i]; //s3[i]에 s1[i] 대입 } return s3;} } //배열 s3 리턴 public class ArrUse { public static void main(String[] args) { ArrayUtility2 ut=new ArrayUtility2(); //ArrayUtility2 class의 객체와 레퍼런스 변수 선언 int a[]={1,2,3,4,5}; //int형 배열 a 선언 및 초기화 int b[]={3,4,5,6,7}; //int형 배열 b 선언 및 초기화 int c[]=new int[a.length+b.length]; //int형 배열 c 선언 int d[]=new int[a.length]; //int형 배열 d 선언 int i; //int형 변수 i 선언 c=ut.concat(a, b); //배열 c에 concat 메소드의 리턴값 대입 d=ut.remove(a, b); //배열 d에 remove 메소드의 리턴값 대입 for(i=0;i<c.length;i++) //i=0부터 c.length 미만까지 반복 { System.out.print(c[i]+" "); //c[i]와 띄어쓰기 출력 } System.out.println(); // 개행문자 출력 for(i=0;i<d.length;i++) //i=0부터 d.length 미만까지 { if(d[i]!=0) //int형 배열은 0으로 자동초기화 되기 때문에 출력안하려면 논리판별 System.out.print(d[i]+" "); //d[i]와 띄어쓰기 출력 }}} | cs |
반응형