2016-11-11 46 views
0

我想創建一個基本的冒泡排序程序,但在某些時候陣列試圖引用第11位,儘管陣列是10長,當它發生返回ArrayIndexOutOfBoundsException異常錯誤未知的原因

int Last, i = 0, Temp; 
    int[] Numbers = new int[10]; 
    String[] NumbersString = new String[10]; 
    String initialString = TextBox.getText(); 
    NumbersString = initialString.split(" "); 
    while(i<10){ 
     Numbers[i] = Integer.parseInt(NumbersString[i]); 
     i = i + 1; 
    } 
    Last = 9; 
    Boolean Swapped = true; 
    while(Swapped = true) { 
     Swapped = false; 
     i = 0; 
     while(i < Last) { 
       if(Numbers[i] > Numbers[i+1]){ 
       Temp = Numbers[i]; 
       Numbers[i] = Numbers[i+1]; 
       Numbers[i+1] = Temp; 
       Swapped = true; 
       } 
      i = i + 1; 
     } 
     Last = Last-1; 
    } 
    String Result = Numbers[0] + " " + Numbers[1] + " " + Numbers[2] + " " + Numbers[3] + " " + Numbers[4] + " " + Numbers[5] + " " + Numbers[6] + " " + Numbers[7] + " " + Numbers[8] + " " + Numbers[9]; 
    ResultText.setText(Result); 
我不知道

回答

1

變化

while(Swapped = true) { 

while(Swapped == true) { 

什麼是happenin G爲Last首先是包裝爲負面,然後當它到達它包裝到Integer.MAX_VALUE的最小負數,然後i將超過9

0

只是儘量把數組的長度在這裏。

int Last, i = 0, Temp; 
    int[] Numbers = new int[10]; 
    String[] NumbersString = new String[10]; 
    String initialString = "1"; 
    NumbersString = initialString.split(" "); 
    while (i < NumbersString.length) { // <-- I change it to NumbersString.length 
     Numbers[i] = Integer.parseInt(NumbersString[i]); 
     i = i + 1; 
    } 
    Last = Numbers.length-1; // <-- I change it to Numbers.length-1 
    Boolean Swapped = true; 
    while (Swapped) { // <-- I change it to Swapped only because your Swapped is a Boolean type, no need to equals it into true. 
     Swapped = false; 
     i = 0; 
     while (i < Last) { 
      if (Numbers[i] > Numbers[i + 1]) { 
       Temp = Numbers[i]; 
       Numbers[i] = Numbers[i + 1]; 
       Numbers[i + 1] = Temp; 
       Swapped = true; 
      } 
      i = i + 1; 
     } 
     Last = Last - 1; 
    } 
    String Result = Numbers[0] + " " + Numbers[1] + " " + Numbers[2] + " " + Numbers[3] + " " + Numbers[4] + " " 
      + Numbers[5] + " " + Numbers[6] + " " + Numbers[7] + " " + Numbers[8] + " " + Numbers[9]; 
    System.out.println(Result); 
} 
相關問題