한 클래스에서 코딩한 메서드를 다른 클래스에서 출력하고 싶으면 어떡해 해야 하나요?
조회수 4952회
ArrayUtils 라는 클래스가 있고 ArrayUtilsTester라는 클래스가 있는데요. ArrayUtils 클래스에는 메서드들을 코딩하고 그 메서드들을 ArrayUtilsTester에서 SOP 이용해서 출력해야하는데 다른건 다 했는데 두 배열을 병합해서 새로운 어레이를 만들어야하는 마지막 파트에서 막히네요...기존처럼 출력하려니 안되서요...그리고 저 병합 메서드가 맞는지도 모르겠네요 하도 이리저리 바꿔대서... 코드가 너무 길어질까봐 (이미 길지만) 제가 이미 성공적으로 출력한것들은 뺏는데요 원래는 각 배열의 최솟값, 최대값, 특정 숫자 등등까지 구해야하는거라...배열들의 사이즈와 그 사이즈에 따라 출력되는 값들 모두 0-100 사이의 랜덤한 숫자들이어야합니다.
import java.util.Random;
public class ArrayUtils
{
private int[] arr;
public ArrayUtils(int sizeOfArray)
{
arr = new int [sizeOfArray];
Random random = new Random();
for (sizeOfArray = 0; sizeOfArray < arr.length; sizeOfArray++)
{
arr [sizeOfArray] = random.nextInt(101);
}
}
public int[] mergeArrays(int[] arr1, int[] arr2)
{
int length = arr1.length+arr2.length;
int [] arrSum = new int[length];
for(int i=0; i < length; i++)
{
if(i < arr1.length)
{
arrSum[i] = arr1[i];
}
else
{
arrSum[i] = arr2[i - arr1.length];
}
}
return arrSum;
}
}
import java.util.Arrays;
import java.util.Random;
public class ArrayUtilsTester
{
public static void main(String[] args)
{
Random random = new Random();
int sizeOfArray = random.nextInt(101);
ArrayUtils arr1 = new ArrayUtils(sizeOfArray);
ArrayUtils arr2 = new ArrayUtils(sizeOfArray);
ArrayUtils arr3 = new ArrayUtils(sizeOfArray);
System.out.println(...)
}
}
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
간단하게 두 가지 방법을 생각해볼 수 있으며, 결과는 의도했던대로 나올 것 같아요.
- arr 변수의 접근 제어자를 private -> public
int[] arrSum = arr1.mergeArrays(arr2.arr, arr3.arr);
- 메서드(getter 와 같은)를 통해 arr 변수에 접근
public int[] getArr() { return arr; } int[] arrSum = arr.mergeArrays(arr2.getArr(), arr3.getArr());
- 와 1시간동안 해봐도 안됬는데; 바로되네요...감사합니다 알 수 없는 사용자 2017.11.29 13:48
- ArrayUtils 클래스에 배열 초기화 없이도 merge 기능을 할 수 있도록 기본생성자를 추가하면 더 좋을 것 같아요. 김선우 2017.11.29 14:49
댓글 입력