2010-08-09 63 views
1

我有一個交錯數組聲明如下排序交錯數組包含null元素

int[][][] tmpA = new int[INT_WORKING_SIZE * 2][][]; 

我試圖理清這個數組與此代碼:

Array.Sort(tmpA, 0, INT_WORKING_SIZE*2, new MyArrayComparer()); 

和我的課:

public int Compare(object x,object y) 
    { 
     if (x == null || y == null) 
      return 0; 
     int[][] arrayA = (int[][])x; 
     int[][] arrayB = (int[][])y; 

     int resultA = arrayA[1].Sum(); 
     int resultB = arrayB[1].Sum(); 

     return resultA.CompareTo(resultB);   
    } 

鋸齒狀陣列的每一行都有2個12位數組。

我想通過將所有的第二陣列的12個整數,最小應首先對數組進行排序。

但是我的主要問題是對象x,y爲常空值和數組排序得到全部爲零。

任何提示?

+2

提示 - 循環,正確的OOP,輔助方法,'arrayA [1] .Sum()'。 – Kobi 2010-08-09 09:15:15

+0

你是否已經完全初始化'tmpA'?我看到你創建了第一個數組。但是那個數組中的12個數組有12個呢? – 2010-08-09 09:21:46

+0

kobi:thx。固定!傑夫:tmpA是2個其他參差不齊的數組的組合。它已初始化。但是,在tmpA數組中間有一個空條目。這是空的原因,我排序後得到所有的空值? – Ray 2010-08-09 09:26:46

回答

1

如果我理解正確的話,你的問題是你返回0,當任的數組爲空,當您應該返回1或-1取決於哪一個不爲空,而0,只有當都爲null。

public int Compare(object x,object y) 
{ 
    // changed code 
    if (x == null && y == null) 
     return 0; 
    if (x == null) 
     return 1; 
    if (y == null) 
     return -1; 
    // end of changed code 
    int[][] arrayA = (int[][])x; 
    int[][] arrayB = (int[][])y; 

    int resultA = arrayA[1].Sum(); 
    int resultB = arrayB[1].Sum(); 

    return resultA.CompareTo(resultB);   
}