2017-03-20 45 views
-3

我正在做一個插入排序的項目,我掀起了這個項目,沒有陣列列表的經驗我收到一個關於檢查特定索引值的錯誤。檢查數組列表中的值

int unsorted[] = {10, 4, 52, 5, 7}; 
    ArrayList sorted = new ArrayList<Integer>(); 

    sorted.add(unsorted[0]); 

    for (int i=1; i <= unsorted.length; i++){ 
     int x=0; 
     while (unsorted[i] > sorted(x)){ 
      x++; 
      if (unsorted[i]<= sorted(x)){ 
       sorted.set(x,unsorted[i]); 
      if (x > sorted.size()){ 
       sorted.add(unsorted[i]); 

我得到上例都sorted(x)錯誤誰能告訴我如何在一個特定的指標來檢查數組列表內的價值? get()

+3

你應該看的第一個地方是官方的'ArrayList'文檔。 https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html –

+3

「我收到一個錯誤」什麼錯誤? –

+0

我覺得'unsorted [1]'是一個錯字。 – shmosel

回答

0

你要找的sorted.get(index)

+0

我試過了,但它只會導致更大的錯誤@Janus Varmarken –

+0

'unsorted'是一個數組。也許你的意思是'sorted.get(x)'? – shmosel

+0

確實,它看起來很喜歡,但它並不明顯,因爲未排序的定義不存在。 OP也可以來自具有下標語法的語言,例如迅速。真的不明白爲什麼這是downvoted ... –

0

彙編錯誤應該用正確的方法來獲得從List一個項目(和後果的ArrayList)來避免。

陣列和ArrayList都有從0,而不是1 當該指數等於你的陣列或ArrayList的長度,使unsorted[unsorted.length]應觸發一個錯誤你應該得到一個錯誤開始的索引。

恕我直言,你的第一個循環應該是

for (int i=1; i < unsorted.length; i++){ 

還要注意的是,你可以使用add()方法,而不是set以插入項目。

https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html

設置元素是用做:

+0

unsorted是一個數組,排序是一個數組列表 –

+0

和我已經添加unsorted 0到數組列表之前 –

+0

哎呀抱歉我的評論,我回答太快......但我認爲你應該遇到索引問題。 –

1

得到一個List的元素通過get()方法執行完畢後,你可以在官方的Java文檔,其中@BilltheLizard已經鏈接看這件事您已經完成了set()方法。

基本上一個對象總是有方法來操縱它。

+0

謝謝,我試過了,但有一個錯誤,但也許我沒有這樣做的權利我會看看鏈接 –

1

如果你想通過插入排序排序,你可以試試這段代碼。

int unsorted[]={1,5,2,7,3}; 
    for (int i = 1; i < unsorted.length; i++) { 
     int key=unsorted[i]; 
     int j=i-1; 
     while((j > -1) && (unsorted [j] > key)){ 
      unsorted [j+1] = unsorted [j]; 
      j--; 
     } 
     unsorted[j+1]=key; 

    } 

    for (int x = 0; x < unsorted.length; x++) { 
     System.out.print(unsorted[x] + ", "); 
    } 
    System.out.println("\n"); 
+0

感謝這個例子的男人! –

0

感謝您的建議!大多數人建議我使用.get,但在使用時出現錯誤。原來我沒有定義ArrayList的類型,所以我不能使用.get。我通過添加來解決這個問題ArrayList<Integer> sorted = new ArrayList<Integer>();if (unsorted[i]<= sorted.get(x)){