그래서 내가하려는 것은 Array 클래스의 일부 메서드를 일반 Array에서 ArrayList로 변환하는 것입니다. 그러나 나는 두 가지 뚜렷한 문제를 겪었다. 첫째로, ArrayList의 순서를 뒤집어 쓰는 동안 이상하게도 6 개의 정수가 있으면 역순으로 처리하려고합니다. 처음 3 개의 인덱스 위치와 실제 정수를 출력합니다. 마지막으로 3. 예를 들면 다음과 같이 출력됩니다 : 역순 : 5, 4, 3, 96, 87, 24, 순서 : false. 내가 인쇄하고자하는 것은 941, 874, 102, 96, 87, 24입니다. 순서는 틀립니다. 내 두 배열 목록의 병합에 관해서는,이 코드 줄을 ArrayList를 인쇄하는 방법으로 변환하는 방법을 잘 모르기 때문에 올바르게 병합 할 지 확신 할 수 없습니다. 원래 병합 된 배열을 출력하기 위해이 두 줄의 코드를 사용했습니다.ArrayList의 순서를 바꾸고 두 개의 ArrayList를 병합
int merged[] = merge(num3,num4);
print(merged);
여기서 I는의 ArrayList를 반대로 이용하고있는 방법과 병합하는 방법은 두 가지이다 : public static void reverse(ArrayList <Integer> a)
에서
/*** <<< CODE NOT COMPLETE >>>
* reverses the order of the elemets in the array
***/
public static void reverse(ArrayList <Integer> a)
{
for (int i = 0; i < a.size()/2; i++)
{
int reverseOrder = a.get(i);
a.set(i, a.size() - 1 - i);
a.set(a.size() - 1 - i, reverseOrder);
}
}
/*** <<< CODE NOT COMPLETE >>>
* merges two sorted arrays into 1 new array, maintains the sorted order
***/
public static ArrayList <Integer> merge (ArrayList <Integer> a, ArrayList <Integer> b)
{
ArrayList <Integer> merge = new ArrayList <Integer> (a.size() + b.size());
int i = 0, j = 0, k = 0;
while (i < a.size() && j < b.size())
{
if (a.get(i) < b.get(j))
{
merge.set(k++, a.get(i++));
}
else
{
merge.set(k++, b.get(j++));
}
}
while (i < a.size())
{
merge.set(k++, a.get(i++));
}
while (j < b.size())
{
merge.set(k++, b.get(i++));
}
return merge;
}
감사합니다. 그게 효과가 있었어. 이제 어떻게하면 내 두 가지 병합 된 메서드를 인쇄해야하는 코드 줄을 변경할 수 있습니까? – CrypticZero
'ArrayList merged = merge (num3, num4); ' –
고마워, 나는 그걸 이전에 해봤다고 생각했는데 잘못 입력했다고 생각해. 그게 내가 그것을 컴파일 할 수 있지만 그것을 실행하려고하면 indexOutOfBoundsException 오류가 발생했습니다. 그것은 merge.set (k ++, a.get (i ++));를 강조 표시했습니다. 내 병합 메서드에서 – CrypticZero