Подтвердить что ты не робот

Чтение пользовательского ввода с консоли

Я хочу, чтобы число от пользователя было затем несколько с номером Pi, которое было присвоено числу. Я попробовал такую ​​вещь, как показано ниже. Но a содержит тарабарщину. Например, если я вставляю 22, a содержит 50.

double a,b;
a = Console.Read();
b = a * Math.PI;
Console.WriteLine(b);
4b9b3361

Ответ 1

Я не уверен, в чем проблема (поскольку вы не сказали нам), но я предполагаю, что

a = Console.Read();

Это будет читать только один символ из вашей консоли.

Вы можете изменить свою программу на это. Чтобы сделать его более надежным, примите более 1 вход char и подтвердите, что ввод фактически является числом:

double a, b;
Console.WriteLine("istenen sayıyı sonuna .00 koyarak yaz");
if (double.TryParse(Console.ReadLine(), out a)) {
  b = a * Math.PI;
  Console.WriteLine("Sonuç " + b); 
} else {
  //user gave an illegal input. Handle it here.
}

Ответ 2

a = double.Parse(Console.ReadLine());

Помните, что если пользователь вводит что-то, что не может быть разобрано в double, будет выведено исключение.

Edit:

Чтобы расширить мой ответ, причина, по которой он не работает для вас, заключается в том, что вы получаете ввод от пользователя в строчном формате и пытаетесь перенести его в двойное. Вы не можете этого сделать. Вы должны сначала извлечь двойное значение из строки.

Если вы хотите выполнить некоторую проверку ошибок, просто выполните следующее:

if ( double.TryParse(Console.ReadLine(), out a) ) {
  Console.Writeline("Sonuç "+ a * Math.PI;); 
}
else {
  Console.WriteLine("Invalid number entered. Please enter number in format: #.#");
}

Спасибо Öyvind и abatischev за помощь в уточнении моего ответа.

Ответ 3

string input = Console.ReadLine();
double d;
if (!Double.TryParse(input, out d))
    Console.WriteLine("Wrong input");
double r = d * Math.Pi;
Console.WriteLine(r);

Основная причина различного ввода/вывода, с которой вы сталкиваетесь, заключается в том, что Console.Read() возвращает char код, а не номер, который вы набрали! Узнайте, как использовать MSDN.

Ответ 4

Я думаю, что есть некоторые ошибки компилятора.

  • Writeline должна быть WriteLine (capital 'L')
  • отсутствует точка с запятой в конце строки

        double a, b;
        Console.WriteLine("istenen sayıyı sonuna .00 koyarak yaz");
        a = double.Parse(Console.ReadLine());
        b = a * Math.PI; // Missing colon!
        Console.WriteLine("Sonuç " + b);
    

Ответ 5

string str = Console.ReadLine();
double a = double.Parse(str);
double b = a * Math.pi;
Console.WriteLine("{0}", b);

Console.Read() читает строку из консоли. ОДИНОЧНЫЙ ХАРАКТЕР В ВРЕМЯ (но ждет ввода перед продолжением. Обычно вы используете его в цикле while). Поэтому, если вы напишете 25 + Enter, он вернет значение unicode 2, которое 50. Если вы повторите второй Console.Read(), он немедленно вернется с 53 (значение unicode 5). Третий и четвертый Console.Read() возвращают символы конца строки/каретки. Пятый ждет нового ввода.

Console.ReadLine() читает a string (поэтому вам нужно изменить строку на double)

Ответ 6

Вам не хватает точки с запятой: double b = a * Math.PI;

Ответ 7

        double a,b;
        Console.WriteLine("istenen sayıyı sonuna .00 koyarak yaz");
        try
        {
            a = Convert.ToDouble(Console.ReadLine());
            b = a * Math.PI;
            Console.WriteLine("Sonuç " + b); 
        }
        catch (Exception)
        {
            Console.WriteLine("dönüştürme hatası");
            throw;
        }

Ответ 8

Когда-нибудь в будущем .NET4.6

//for Double
double inputValues = double.Parse(Console.ReadLine());

//for Int
int inputValues = int.Parse(Console.ReadLine());