0

我制作了一个程序,它读取一堆随机数的输入并测试它们是否符合某些标准。如果它们符合条件,则该方法返回 true。

我想知道是否有一种方法可以保持总共有多少值返回 true。

为了节省篇幅,把我开始使用的输入法和计数法贴出来!

任何帮助将不胜感激!

这就是我目前所处的位置......

public bool Requirement(int input, int countOfTrue)
    {
        if (input % 8 == 0 && input % 11 == 0)
        {
            Console.WriteLine("True");
            countOfTrue = countOfTrue + 1;
            return true;
        }
        return false;
    }

public int TotalTrue(int countOfTrue)
    {
        Console.WriteLine("Number of True: ");
        return countOfTrue;
    }
4

3 回答 3

2

将其更改为:

public bool Requirement(int input, ref int countOfTrue)
{
    if (input % 8 == 0 && input % 11 == 0)
    {
        Console.WriteLine("True");
        countOfTrue = countOfTrue + 1;
        return true;
    }
    return false;
}

添加ref将修改原始变量,而不仅仅是堆栈本地变量。

正如凯文指出的那样,您实际上不能使用,因为如果条件为假,out则不会分配变量。if

于 2013-10-25T22:47:04.710 回答
1

您可以制作一个propertyfortrue计数而不是制作方法。这将节省方法调用以及代码空间。用错误的设计节省空间不是一个好习惯。您可以使用ref发送可以递增的初始值,但您需要保存返回value的值以供下次调用。

public TotalTrueCount {get; set;}

public bool Requirement(int input)
{
    if (input % 8 == 0 && input % 11 == 0)
    {
        Console.WriteLine("True");
        TotalTrueCount++;

        return true;
    }
    return false;
}
于 2013-10-25T22:48:19.747 回答
0

最好和最简洁的方法是使用FindAll专门为此设计的方法。

var numbers = new List<int>();

// read the numbers into the list (e.g. from file)

var results = numbers.FindAll(num => num % 8 == 0 && num % 11 == 0); // returns a new list with all the numbers matching your predicate
var resultsCount = results.Count; // number of resulting numbers
于 2013-10-25T23:06:46.887 回答