2016-05-23 124 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(); 
} 

注意到这只是纠正了打字的问题不是你的逻辑

相关问题