所以我有这个代码
//in the Search class
public bool LinearSearchEx (int target, int[] array, out int number)
{
number = 0;
for (int i = 0; i < array.Length; i++)
{
if (target == array[i])
{
number += 1;
return true;
}
}
return false;
}
我想做的是让该方法每次检查是否在数组中找到数字时都会递增number参数,这就是我在main中的调用方式。
Search s = new Search();
int num = 0;
int [] numsarr = new int[10] { 5, 4, 3, 6, 7, 2, 13, 34, 56, 23 };
int value = 6;
Console.WriteLine("num is {0}", num);
if(s.LinearSearchEx(value, numsarr, out num) == true)
{
Console.WriteLine("Found it");
Console.WriteLine("Out num is {0}", num);
}
else
{
Console.WriteLine("Sorry not found");
Console.WriteLine("Out num is {0}", num);
}
我不确定在我的方法中在哪里增加输出编号,因为我现在拥有的方式仅增加1,仅此而已。如果找不到该值,则应打印出整个数组的长度。数组中的两个位置是否增加?谢谢,编码很新
答案 0 :(得分:1)
找到该项目后,您只会增加“编号”。因此,“ number”对您而言始终为0或1。 听起来您想让“数字”代表数组中找到它的位置。像这样:
public bool LinearSearchEx (int target, int[] array, out int number)
{
number = 0;
for (int i = 0; i < array.Length; i++)
{
number = i + 1;
if (target == array[i])
{
return true;
}
}
return false;
}
以上内容将返回找不到数组的长度。如果找到,它将返回数组中的位置。
答案 1 :(得分:0)
一种简单的方法可以使您的方法类似于Java的indexOf
(docs)。除了可以从方法中返回布尔值之外,还可以返回计数,如果找不到该项目,则返回-1。像这样:
//in the Search class
public int LinearSearchEx (int target, int[] array)
{
for (int i = 0; i < array.Length; i++)
{
if (target == array[i])
{
return i + 1;
}
}
return -1;
}
然后使用它:
Search s = new Search();
int num = 0;
int [] numsarr = new int[10] { 5, 4, 3, 6, 7, 2, 13, 34, 56, 23 };
int value = 6;
Console.WriteLine("num is {0}", num);
int outNum = s.LinearSearchEx(value, numsarr)
if(outNum > 0)
{
Console.WriteLine("Found it");
Console.WriteLine("Out num is {0}", outNum);
}
else
{
Console.WriteLine("Sorry not found");
// Note that outnum will always be the array length if the number wasn't found
Console.WriteLine("Out num is {0}", numsarr.Length);
}