метод bool и выходной параметр - PullRequest
0 голосов
/ 09 декабря 2018

Итак, у меня есть этот код

//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;
}

Я хочу сделать так, чтобы метод увеличивал числовой параметр каждый раз, когда он проверяет, найдено ли число в массиве. Вот как я его вызвал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);

}

Я не уверен, где увеличивать число out в моем методе, потому что способ, которым он у меня есть, теперь только увеличивает 1 и ничего больше.Если значение не найдено, следует распечатать длину всего массива.Есть ли приращение в двух местах в моем массиве?Спасибо, совсем новый для кодирования

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Вы увеличиваете свой «номер» только тогда, когда предмет найден.Таким образом, «число» всегда 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;
}

Выше будет возвращаться длина массива, если он не найден.Если он найден, он вернет место в массиве.

0 голосов
/ 09 декабря 2018

Один простой способ сделать это - сделать ваш метод похожим на 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);

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...