C# выдает ошибку: System.FormatException: "Input string was not in a correct format."
При компиляции выдает ошибку. У меня в задании первое число(b) должно бить задано изначально, а второе число(c) должен вписать пользователь. Числа (b) и (c) типа double. Я решил дополнить код так чтобы если пользователь вводит не то число ему предложило ввести его заново. Если вводить не то число то программа работает правильно без ошибок, а если вводить правильное то выдает ошибку. Так же если убрать метод "Console.ReadLine()" и задать правильное число изначально то все работает. Там где случается ошибка будет выделено звездочками.
using System;
namespace Lab_3_3
{
class Program
{
static void Main(string[] args)
{
Console.OutputEncoding = System.Text.Encoding.Unicode;
static void ckl()
{
double b = 3;
Console.WriteLine("Перше число: " + b);
Console.WriteLine("Введіть друге число - \"1.7\": ");
//*************************************************
double c = Convert.ToDouble(Console.ReadLine());//*
//*************************************************
if (c == 1.7)
{
double a = Math.Round(Math.Pow(Math.Sin(b), 2), 2);
double x = Math.Round(a + Math.Pow(c, 3), 2);
double y = Math.Round(Math.Pow(Math.E, Math.Sqrt(Math.Abs(x))), 2);
Console.WriteLine("Відповідь: a = " + a + " x = " + x + " y = " + y);
}
else
{
ckl();
}
}
ckl();
}
}
}
Ответы (2 шт):
Автор решения: Сергей Татевосян
→ Ссылка
var inputValue = Console.ReadLine();
double c;
if (Double.TryParse(inputValue, out c))
{
if (c == 1.7)
{
double a = Math.Round(Math.Pow(Math.Sin(b), 2), 2);
double x = Math.Round(a + Math.Pow(c, 3), 2);
double y = Math.Round(Math.Pow(Math.E, Math.Sqrt(Math.Abs(x))), 2);
Console.WriteLine("Відповідь: a = " + a + " x = " + x + " y = " + y);
}
else
{
ckl();
}
}
Автор решения: Sergey
→ Ссылка
using System;
namespace Lab_3_3
{
class Program
{
static void Main(string[] args)
{
double b = 3;
Console.WriteLine("Перше число: " + b);
Console.WriteLine("Введіть друге число - \"1.7\": ");
//*************************************************
double c;
while (!double.TryParse(Console.ReadLine(), out c))
{
}
if (Math.Abs(c - 1.7) < 0.1)
{
var a = Math.Round(Math.Pow(Math.Sin(b), 2), 2);
var x = Math.Round(a + Math.Pow(c, 3), 2);
var y = Math.Round(Math.Pow(Math.E, Math.Sqrt(Math.Abs(x))), 2);
Console.WriteLine("Відповідь: a = " + a + " x = " + x + " y = " + y);
}
}
}
}