Создания консольного калькулятора на C#
Здраствуйте, суть вопроса такова - Не понимаю почему в результате умножения получается 0:
public void Multiply()
{
double[] numbers = new double[9999999];
double res = 1.0;
for (int i = 0; ; i++)
{
Console.WriteLine("Please Enter a number : ");
string a = Console.ReadLine();
Double.TryParse(a, out numbers[i]);
res *= numbers[i];
if (a == "quit")
{
Console.WriteLine($"result is {res}");
break;
}
}
}
Я сделал такой же код для добавления, только в переменной res я записал 0.0, но он работал правильно. Объясните пожалуйста в чем ошибка :D
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
Потому что если в a не число, то в numbers[i] оказывается ноль.
if (Double.TryParse(a, out numbers[i]))
res *= numbers[i];
Автор решения: aepot
→ Ссылка
Ответ от @Igor безусловно правильный, я только добавлю, что если ещё убрать всё лишее не меняя поведения метода, то код получится такой:
public void Multiply()
{
double res = 1.0;
while (true)
{
Console.Write("Please Enter a number : ");
string a = Console.ReadLine();
if (double.TryParse(a, out double number))
{
res *= number;
}
else if (a == "quit")
{
Console.WriteLine($"result is {res}");
break;
}
}
}
Этот код будет потреблять примерно в 9999999 раз меньше памяти.