bool方法和out参数

时间:2018-12-09 20:35:53

标签: c# increment linear-search out-parameters

所以我有这个代码

//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,仅此而已。如果找不到该值,则应打印出整个数组的长度。数组中的两个位置是否增加?谢谢,编码很新

2 个答案:

答案 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的indexOfdocs)。除了可以从方法中返回布尔值之外,还可以返回计数,如果找不到该项目,则返回-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);

}