2015-01-29 2 views
-3

마지막 요소에서 첫 번째 요소로 배열을 읽으 려하고 일부 경우에이를 변경하려고합니다. 하지만 왜 인덱스 밖으로 경계 예외를 가져 오는 지 모르겠다.IndexOutOfBound 배열 끝에서 인쇄

public class Test 
{ 
    private Scanner scan = new Scanner (System.in); 

    private int dimension; 

    private int[] a; 

    public int getDimension() { 
     return dimension; 
    } 

    public void setDimension(int dimension) { 
     this.dimension = dimension; 
    } 

    public Test(int dimension) { 
     System.out.println("Add elements"); 
     setDimension(dimension); 
     this.a = new int[this.dimension]; 
     for(int i = 0; i < this.dimension; i++) 
      a[i] = scan.nextInt(); 
    } 

    public void calc() { 
     int aux = 0; 
     for(int i = a.length-1; i >= 0; i--) 
      if(a[i] > a[i-1]) { 
       aux = a[i-1]; 
       a[i-1] = a[i]; 
       a[i] = aux; 
      } 
     for(int i = 0; i < getDimension(); i++) 
      System.out.print(a[i] + " "); 
    } 

    public static void main(String[] args) { 
     Test p = new Test(5); 
     p.calc(); 
    } 
} 
+0

가없는 for(int i = a.length-1; i > 0; i--)

변경은 그것을 작동합니다, 당신이 사용하는 인덱스를 인쇄 해 봅니다. 결국 당신은 왜 처음에 그것을 얻었는지 알게 될 것입니다. – DeadlyJesus

답변

5
for(int i = a.length-1; i >= 0; i--) 
    if(a[i]>a[i-1]){ 

i=0은 다음 a[-1]를 가리키는. `IndexOutOfBoundsException`가 발생하면 또 다른 문제

+0

감사합니다. 그거였다 – Axl