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すると、スタックローカル変数だけでなく、元の変数が変更されます。

ケビンが指摘したように、条件が falseoutの場合、変数が割り当てられないため、実際には使用できません。if

于 2013-10-25T22:47:04.710 に答える
1

propertyメソッドを作る代わりにfor truecount を作ることもできます。これにより、メソッド呼び出しが節約され、コード用のスペースも節約されます。間違った設計でスペースを節約することは、良い習慣ではありません。を使用してインクリメントできる初期値を送信できますが、次の呼び出しに使用するため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 に答える