2011-08-25 62 views
1

我寫了一個數組排序使用我在這個網站上找到的例子。但是我的代碼沒有編譯正確。它不是存儲第一個值,而是存儲整數0並重復它。我似乎無法找到它有什麼問題,但我懷疑它是在我的循環中的某個地方。陣列分類器。輸出錯誤

/** 
* @author angu2548 
* XXX 310255325 
*/ 
public class Sorter { 

    public int[] sortArray(String[] args) { 
     int [] numbers = new int [args.length]; 

     //Turning it into an int [] array 
     for (int i= 0; i > args.length; i++){ 
      int x = Integer.parseInt(args[i]); 
      numbers[i] = x; 
     } 

     //Insertion sort 
     for(int j = 1; j < numbers.length; j++){ 
      int temp = numbers[j]; 
      int i = j -1; 

      while (i > 0 && numbers[i] > temp){ 
       numbers[i + 1] = numbers[i]; 
       i--;    
      } 
      numbers[i + 1] = temp; 
      //System.out.println("got to here"); 
     } 
     return numbers; 
    }  

    public static void main(String[] args) {   
     Sorter sort = new Sorter(); 
     int[] result = sort.sortArray(args); 
     if(result != null && result.length > 0){ 
      System.out.print("[" + result[0]); 
      for(int i=1; i<result.length; ++i){ 
       System.out.print(", " + result[i]); 
      } 
      System.out.println("]"); 
     } 
    } 
} 

的輸出是[0,0,0,0,0,0,0,0,0,0,0,0]儘管我的值是 [1 2 3 4 5 6 7 8 8 5 4 3]

回答

3

您做出的循環條件的錯誤:

for (int i= 0; i > args.length; i++) 

將阻止循環運行,因此numbers永遠不會用正確的元素初始化。它應該是

for (int i= 0; i < args.length; i++) 
+0

三江源非常多。 – syncoroll

2

變化'>''<'以下行:

for (int i= 0; i > args.length; i++) 
+0

Opps,@Peter Torok的相同答案 –