2014-12-24 8 views
2

배열의 첫 번째 요소를 배열의 맨 뒤로 이동하는 간단한 방법을 만들려고합니다.배열에서 요소를 이동하는 방법

여기에 내 코드

public class Ex5_ShiftLeft {  
    public static void main(String[] args) { 
    int[] a = new int[] {6, 2, 5, 3}; 
    swap (a); 

    } 

    public static void swap(int[] array){ 
     array[0] = array[array.length]; 
     System.out.println(Arrays.toString(array)); 
    } 
} 

이클립스 내 코드 오류를 검출하지 않는 것,하지만 난 그것을 실행할 때, 나는 "스레드에서 예외"오류 텍스트를

을 얻을 주를의 "java.lang.ArrayIndexOutOfBoundsException : apollo.exercises.ch04_loops.Ex5_ShiftLeft.main에서 apollo.exercises.ch04_loops.Ex5_ShiftLeft.swap (Ex5_ShiftLeft.java:19) (Ex5_ShiftLeft.java:1)에서 4"

팁이 있습니까?

+0

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html – Tom

답변

2

배열은 프로그램이 일련의 숫자 또는 배열에있는 다른 번호를 저장하기 위해 예약 한 메모리 세그먼트를 나타냅니다. 이 때문에 배열의 크기를 조정할 수 없습니다. 다른 프로그램이 해당 메모리를 사용하고 있기 때문에 예약 한 메모리 세그먼트 끝까지 지나갈 수 없습니다. 첫 번째 요소를 가져 와서 배열의 끝 부분에 놓으려고하면 솔루션이 작동하지 않습니다. 범위를 벗어났습니다. 대신 첫 번째 요소를 기억한 다음 첫 번째 공간을 제외하고 각 요소를 왼쪽으로 이동하여 배열 끝 부분에 공간을 만들고 배열의 끝에 첫 번째 요소를 넣을 수 있습니다.

-1

오류 때문에 라인이다 :

어레이 [0] = 배열 ​​[사항 Array.length];

어레이의 마지막 요소에 액세스하고 어레이를 채우려면 [0] 다음

어레이 [0] = 배열보다 사용 [사항 Array.length-1];

+0

정확하지만 서면으로 설명한대로 문제는 해결되지 않습니다. – Vitruvius

0

기본적으로 배열의 크기는 정적입니다. 이 목적으로 동적 인 ArrayList을 사용할 수 있습니다.

-1

을 사용하면 Array의 마지막 항목에 액세스 할 수 있습니다.

+0

정확하지만 서면으로 설명한대로 문제가 해결되지 않습니다. – Vitruvius

2

초심자 인 것처럼 받아들이므로 계속 얘기하면 좋을 것입니다.

public class Ex5_ShiftLeft {  
    public static void main(String[] args) { 
    int[] a = {6, 2, 5, 3}; 
    swap (a); 
} 

public static void swap(int[] array){ 
    int temp = array[0] 
    array[0] = array[array.length-1]; 
    array[array.length-1] 

    for(int x : array){ 
     System.out.println(x+" "); 
    } 
    } 
} 

변경 사항 : 나는 당신의 당신을 위해 아래의 코드를 개선 당신은 그냥이 함께 배열을 선언 할 수 있습니다 : int로 []에서 myArray = {6,2,5,3};

스왑 기능에 문제가 있습니다. 배열의 첫 번째 요소를 last.Also와 교체 할 수 있도록 임시 변수를 만들어야합니다. 배열의 마지막 요소는 배열 [array.length-1]입니다.

둘째로, 향상된 For- 루프을 사용하여 배열을 인쇄하십시오. 도움이 되었기 바랍니다.

+0

죄송합니다. 스왑 함수의 마지막 부분은 array [array.length-1] = temp; – sparrow

+0

고마워요!임시 변수를 만들어야하는 이유는 무엇입니까? 배열 [0] 자체적으로 변수가 아닌가요? –

+1

첫 번째 요소를 가져 와서 이것이 마지막 요소라고 말하면 마지막 요소를 어디서 가져 와서 첫 번째 요소가 될 것입니까? 당신은 임시 장소에 그것을 저장해야만하고 그것을 검색하고 그것이 이제 첫 번째 요소라고 말합니다. – sparrow

관련 문제