2014-01-23 46 views
1

我試圖將一個單詞插入按字母順序排列的單詞數組中。下面的代碼將數組轉換爲數組列表並將該單詞插入到正確的位置。但是,如果要插入的單詞必須放在最後,則不會被插入。對於最後一個for循環,我嘗試將條件設置爲< = aList.size(),但是我得到一個ArrayList.rangeCheck和ArrayList.get異常。任何幫助,將不勝感激。插入數組列表中最後一個位置的麻煩

import java.util.*; 

public class insertSort { 

public static void main(String args []) { 

    String [] sortedArray = new String [] {"aa", "ball", "dog", "zebra", "zzz"}; 

    ArrayList <String> aList = new ArrayList <String>(); //create new arraylist 

    for (int i=0; i < sortedArray.length; i++){ 
     String temp = sortedArray [i]; 
     aList.add(temp); 
    } 

    System.out.println(aList);      

    String word = "zzzz"; 
    for (int i =0; i < aList.size();i++) { 
     String temp = aList.get(i); 
     int comparisonResult = word.compareTo(temp) ; 
     if (comparisonResult < 0 | comparisonResult == 0) { 
      aList.add(i , word); 
      break;} 

     } 


    System.out.println(aList); 

} 
} 

回答

2

使用布爾記錄是否成功插入前方的任何其他人的話,如果沒有,將它添加到數組的結尾:

boolean wasInserted = false; 
for (int i =0; i < aList.size();i++) { 
    String temp = aList.get(i); 
    int comparisonResult = word.compareTo(temp) ; 
    if (comparisonResult < 0 || comparisonResult == 0) { 
     aList.add(i , word); 
     wasInserted = true; 
     break; 
    } 
} 
if(!wasInserted) { 
    aList.add(word); 
} 
1

的for循環,只會增加如果單詞在另一個單詞前面按字母順序排列,或者它與您列表中的另一個單詞相同,則爲該列表添加新單詞。在

String word = "zzzz"; 

這確實是按字母順序排列在另一個字符之前或等於另一個字,所以它不被添加。 您需要添加某種檢查,看是否添加了工作,如果沒有,請致電

aList.add(word) 

新單詞添加到列表的末尾。