С
Expenses = Convert.ToInt32(Console.ReadLine());
вы присваиваете значение Expenses
с каждой итерацией. Так как расходы пользователя не равны последней потраченной им сумме, а суммированной сумме, вам придется суммировать расходы
Expenses = Expenses + Convert.ToInt32(Console.ReadLine());
. Это можно упростить с помощью +=
, что в принципе "добавить значение к содержимому переменной и присвоить новое значение переменной" . Это дает
Expenses += Convert.ToInt32(Console.ReadLine());
На примечании стороны
Нет обработки ошибок. Ваша программа обработает sh, если я введу, например, ei19
в качестве суммы. В то время как ответ Дмитрия обеспечивает подход к обработке ошибок в вашей программе, он завершится, как только вы введете что-то, что не является числом. Возможно, вы захотите проверить правильность ввода и отобразить сообщение об ошибке
while(!Finish)
{
var input = ReadInput("Your message");
if(ShouldExit(input))
{
Finish = true;
}
else if(IsValidAmount(input))
{
Expenses = input.Amount;
}
else
{
WriteErrorMessage("Your error message");
}
}
, если input
относится к типу UserInput
, например,
class UserInput
{
// ...
public bool Finished { get; }
public Decimal Amount { get; }
}
только для сущности это.