Ich habe eine Funktion, die eine Liste von Zahlen aufnimmt und zurückgibt, wie viele gerade Zahlen und ungerade Zahlen gibt es in der Liste. Ich habe jedoch eine Liste von Zahlen übergeben, aber ich bekomme 0 Ergebnisse.Code nicht zurück zu erwartende Anzahl von geraden und Chancen
Hier ist meine Funktion -
public static string HowManyEvenAndOdds(List<int> numbers)
{
int numOfOdds = 0;
int numOfEvens = 0;
int numOfBoth = 0;
foreach (int i in numbers) {
bool isEven = i % 2 == 0;
bool isOdd = i % 3 == 0;
numOfBoth = isEven && isOdd ? numOfBoth++ : numOfBoth;
numOfEvens = isEven ? numOfEvens++ : numOfEvens;
numOfOdds = isOdd ? numOfOdds++ : numOfOdds;
}
return string.Format("This list has {0} odd numbers,\n{1} even numbers,\nand {2} numbers that are even and odd.", numOfOdds, numOfEvens, numOfBoth);
}
Alle Ideen, was ich falsch hier? Ich debuggte durch, aber keine der Listen inkrementieren.
Dank
Eine [ungerade Zahl] (https://simple.wikipedia.org/wiki/Odd_number) ist definiert als "eine Zahl, die kein Vielfaches von 2 ist". 'i% 3 == 0' ist ** nicht **, wie Sie für ungerade Zahlen testen. Und keine Zahl kann sowohl gerade als auch ungerade sein. –
Versehentlich gelöscht mein Kommentar ... sicherlich 'numOfBoth' sollte entweder nur die Gesamtzahl durchgereicht werden, z. 'numOfBoth = numOfEvens + numOfOdds' oder, ich bin nicht sicher, was es sonst noch wäre – Josh
@ p.s.w.g Ich denke, ich habe das übertrieben. –