我不知道为什么我在最后一行中提出了以下CS0029错误(返回dmin)。它告诉我,我不能隐式地将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;
答案 0 :(得分:0)
dmin是一个Int,但MinDistance返回一个int(int [])数组。如果您需要int而不是数组,请将第一行更改为:
private static int MinDistance(int[] sortedArray)
答案 1 :(得分: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;
答案 2 :(得分:0)
正如大家所说,你的错误在于声明你的函数返回一个int的数组(&gt; int []),在代码中,你返回一个int值(dmin,你的最小值 - 被排序的数组)。
您需要做的是:
1 /更改函数的声明,使其返回一个int,如Aimnox所述
2 /声明你调用函数的int:
int[] sortedArray = MinDistance(unsortedArray); // WRONG
int minValue = MinDistance(unsortedArray); // RIGHT
答案 3 :(得分:0)
你已经把自己与你的数组绑在一起
了你正在输入一个数组,将其转换为整数值,然后尝试将其视为一个数组,所以首先你需要考虑你在做什么
所以你想要最小值还是所有最小值?
如果它的THE min那么
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;
}
如果是ALL那么
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();
}
请注意,这只是纠正输入问题而不是逻辑