Проблема: вы увеличиваете counter
, только если % 5 == 0
, но оно никогда не достигает этого значения.Как вы можете видеть, ваше начальное значение:
int counter = 0;
Итак, вторая часть условия if будет иметь значение false
на первой и всех последующих итерациях, потому что переменная никогда не получит шанс измениться.,Он остается на 0
во всех итерациях
Решение: поместите инкрементную строку за пределы предложения if.Таким образом, вы фактически подсчитываете количество входных чисел и, таким образом, можете определить, является ли это 5-м, 10-м, 15-м ...
Поскольку вы намереваетесь считать входные числа, я быпредлагаем поставить
number = int.Parse(Console.ReadLine());
в качестве первой строки в цикле while.Затем вы можете подсчитать, и после этого вы должны оценить, является ли это число 5-м, 10-м, 15-м ... элементом:
while (number != 0)
{
Console.Write("Enter a number: ");
number = int.Parse(Console.ReadLine());
counter++;
if (number > 0 && counter % 5 == 0)
{
sum = sum + number;
}
}
РЕДАКТИРОВАТЬ: Вдохновленный комментарием PaulF :
Я бы предположил, что счетчик должен увеличиваться только если (число> 0).
Чтобы быть точным в деталях ваших требований, вам нужно будет сделать дополнительное условие if для проверки этого случая.Но поскольку 0
является нейтральным элементом в добавлении, это не имеет значения для вычисленной суммы.Таким образом, код должен по-прежнему давать желаемый результат
РЕДАКТИРОВАТЬ 2:
Если вы также хотели запретить использование отрицательных чисел, то вам следует разделить условие if на два и увеличить счетчик, только есливведенный номер больше 0
.После этого вы можете проверить, является ли текущий элемент кандидатом на добавление к сумме:
while (number != 0)
{
Console.Write("Enter a number: ");
number = int.Parse(Console.ReadLine());
if (number > 0 )
{
counter++;
if (counter % 5 == 0)
{
sum = sum + number;
}
}
else
{
Console.Write("Please no negative numbers!");
}
}