2013-07-21 87 views
0

所以我非常新的編程。我參加了一個在線課程,並瞭解我輸入的代碼,但無法正常工作。我經常得到一個「索引越界」的錯誤,這是沒有意義的,因爲我只保留了0-4的5個值。你能找出問題嗎?謝謝!實現氣泡排序的Java Array程序

public class LEGGO 
{ 
public static void main(String args[]) 
{ 
    int j, i, l, m; 
    int This[] = new int[5]; 
    This[0] = 8; 
    This[1] = 4; 
    This[2] = 24; 
    This[3] = 14; 
    This[4] = 56; 
    for (j=1; j<5; j++) 
    { 
     for(l=0; l<5-j; l++) 
     { 
      if (This[l]<This[l+1]) 
      { 
       i=This[l]; 
       This[l]=This[l+1]; 
       This[l+1]=i; 
      } 
     } 
    } 
    for(m=0; m<5; m++); 
     System.out.print(This[m]); 
    } 
} 

回答

0

你必須在您上次for循環delcaration分號,刪除它,它會工作....

for(m=0; m<5; m++) 
1

你的堆棧跟蹤會告訴你,是造成異常的行。

編輯:問題是for循環結尾的分號和缺少'{'。當你執行m ++時,它會將m增加到5,然後在你的println中使用。

您還可以通過減少變量範圍來避免這些類型的問題。如果您在for循環中初始化m,它將不在下一行的範圍內。

此外,遵循Java代碼約定更好的可讀性: http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html

0

歡迎節目,我希望你享受的挑戰。

您犯了語法錯誤。 對於(m = 0; m < 5; m ++)的行;對於(m = 0; m < 5; m ++){您實際上應該是{}您錯過了右大括號}

這非常不吉祥,因爲它意味着程序的行爲與您期望的行爲非常不同 - 但是java編譯器正在按照它的要求進行操作。

在java(和許多其他編程語言)中,分號意味着'語句結束'。這意味着因爲你已經在for循環之後放了一個,所以會發生什麼,它只是執行for循環而不做其他任何事情。這意味着變量m的計數最多爲5.完成後,程序繼續嘗試讀取數組 - >這是[m]這是這是[5]。作爲數組這是五個元素長,並且數組從零開始計數的元素這個[4]是數組的最後一個元素。

我已經使用註釋來標記程序中的右花括號,以便更容易查看出了什麼問題。如果您使用java IDE,則可以更輕鬆地查看這樣的問題。

然而,這是一個可疑的編程課程 - 雖然它教會了如何使用數組和語句,但很早就認識到,不應該像這樣編寫代碼,因爲它會導致這些類型的問題。雖然不是初學者的編程主題,但有經驗的程序員可以避免使用[Java集合的API](http://docs.oracle.com/javase/7/docs/technotes/guides/collections/overview.html)來犯這個錯誤。

public class LEGGO{ 
    public static void main(String args[]){ 
      int j, i, l, m; 
      int This[] = new int[5]; 
      This[0] = 8; 
      This[1] = 4; 
      This[2] = 24; 
      This[3] = 14; 
      This[4] = 56; 

      for (j=1; j<5; j++){ 
       for(l=0; l<5-j; l++){ 
         if (This[l]<This[l+1]){ 
          i=This[l]; 
          This[l]=This[l+1]; 
          This[l+1]=i; 
         }// end if 
       } //end for l 
      } //end for j 

      for(m=0;m<5;m++){ 
       System.out.print(This[m]); 
      }// end for m 
    }//end main 
}//end class 

快樂的java黑客入侵。

+0

注意:這一個帶給我的眼淚。 1989年工程計算101單​​元的任務是在VAX上編寫Fortrean中的泡泡。 –