2016-05-23 126 views
0

我不知道爲什麼我在最後一行(return dmin)中提出了以下CS0029錯誤。它告訴我,我不能隱式轉換int類型爲int []:不能隱式地將int類型轉換爲int []

private static int[] MinDistance(int[] sortedArray) 
    { 
     int dmin = int.MaxValue; 

     int length = sortedArray.Length; 
     for (int i = 0; i < length - 1; i++) 
     { 

      for (int j = 0; j < length - 1 - i; j++) 
      { 

       if (sortedArray[i] != sortedArray[j] && Math.Abs(i - j) < dmin) 
       { 

        dmin = Math.Abs(i - j); 

       } 
      } 
     } 
     return dmin; 
+1

是的,因爲你的方法聲明爲返回一個'int []' - 你的意思是這樣做嗎? –

+0

'Math.Abs​​(i - j)'或'Math.Abs​​(sortedArray [i] - sortedArray [j])'? – fubo

+0

你的邏輯是錯誤的,告訴我們你希望達到什麼,我們可以建議正確的方法來修復它 – MikeT

回答

0

DMIN是int,但minDistance纔會將返回一個int數組(INT [])。如果您需要int和不是數組改變第一行:

private static int MinDistance(int[] sortedArray) 
0

更改代碼

private static int MinDistance(int[] sortedArray) 
    { 
     int dmin = int.MaxValue; 

    int length = sortedArray.Length; 
    for (int i = 0; i < length - 1; i++) 
    { 

     for (int j = 0; j < length - 1 - i; j++) 
     { 

      if (sortedArray[i] != sortedArray[j] && Math.Abs(i - j) < dmin) 
      { 

       dmin = Math.Abs(i - j); 

      } 
     } 
    } 
    return dmin; 
0

正如大家都在說,你的錯誤是在這裏聲明你的函數爲返回一個int數組(> int [])在代碼中,您返回的是一個int值(dmin,即您的待分類數組的最小值)。

你需要做的是:

1 /更改函數的聲明,以便它返回一個int,由Aimnox

2 /宣稱你在哪裏調用你的函數一個int表示:

int[] sortedArray = MinDistance(unsortedArray); // WRONG 
int minValue = MinDistance(unsortedArray); // RIGHT 
0

您看到了綁在這裏結與陣列

你餵養在陣列將其轉換爲一個整數值和T試圖把它看作一個數組,所以首先你需要考慮你在做什麼

所以你想要最小值或所有最小值?

如果其分鐘,然後

int min = MinDistance(array); 
private static int MinDistance(int[] sortedArray) 
{ 
    int dmin = int.MaxValue; 

    int length = sortedArray.Length; 
    for (int i = 0; i < length - 1; i++) 
    { 

     for (int j = 0; j < length - 1 - i; j++) 
     { 

      if (sortedArray[i] != sortedArray[j] && Math.Abs(i - j) < dmin) 
      { 

       dmin = Math.Abs(i - j); 

      } 
     } 
    } 
    return dmin; 
} 

是否所有然後

int[] allMin = MinDistance(array); 
private static int[] MinDistance(int[] sortedArray) 
{ 
    List<int> dmin = new List<int>(); 

    int length = sortedArray.Length; 
    for (int i = 0; i < length - 1; i++) 
    { 

     for (int j = 0; j < length - 1 - i; j++) 
     { 

      if (sortedArray[i] != sortedArray[j] && Math.Abs(i - j) < dmin) 
      { 

       dmin.Add(Math.Abs(i - j)); 

      } 
     } 
    } 
    return dmin.ToArray(); 
} 

注意到這只是糾正了打字的問題不是你的邏輯

相關問題