public static void sort(Object[] objects){ if(objects instanceof Number[]){ for (int i = 0; i < objects.length-1; i++) { for (int j = i+1; j < objects.length; j++) { //判斷前一個值是否大於後一個值 if(((Number)objects[i]).doubleValue()>((Number) objects[j]).doubleValue()){ Object temp = objects[i]; objects[i] = objects[j]; objects[j] = temp; } } } }else if(objects instanceof String[]){ for (int i = 0; i < objects.length-1; i++) { for (int x = i+1; x < objects.length; x++) { //拿到前一個String char[] charBefore = ((String)objects[i]).toCharArray(); //拿到後一個String char[] charsAfter = ((String)objects[x]).toCharArray(); //計算當前變換的String[x]的長度 int length = ((String) objects[x]).length(); //獲取最短循環次數,以避免下標越界 int loopNumber = ( charBefore.length > length ? length : charBefore.length ); for (int j = 0; j < loopNumber; j++) { //判斷前一位的首字母是否小於後一位,例如:首字母a<首字母b則不用再比較 if((int)charBefore[j]<(int)charsAfter[j]){ break; } //判斷前一位字母是否大於後一位字母,若是大於則替換位置 else if((int)charBefore[j]>(int)charsAfter[j]){ Object temp = objects[i]; objects[i] = objects[x]; objects[x] = temp; break; } //若是兩個String的長度不一樣,最短內容的最短起始位到最短結束位 和 最長內容的最短起始位和最短結束位的這段字符串長度內容相等, // 則長度最短的放在前面,例如String a = "asd";String b = "as"; 則 字符串b排在前面 else if (j == loopNumber-1 && charBefore[loopNumber-1] == charsAfter[loopNumber-1]){ if(charBefore.length > charsAfter.length) { Object temp = objects[i]; objects[i] = objects[x]; objects[x] = temp; } } } } } } }