¿Cómo puedo leer la entrada del usuario desde la consola?

Quiero obtener un número del usuario y luego multiplicar ese número con Pi. mi bash de esto está abajo. Pero a contiene galimatías. Por ejemplo, si inserto 22 , entonces a contiene 50 . ¿Qué estoy haciendo mal? No obtengo ningún error de comstackción.

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

No estoy seguro de cuál es tu problema (ya que no nos lo has contado), pero supongo que

 a = Console.Read(); 

Esto solo leerá un personaje de tu consola.

Puedes cambiar tu progtwig a esto. Para hacerlo más robusto, acepte más de 1 entrada de caracteres y valide que la entrada es realmente un número:

 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. } 
 a = double.Parse(Console.ReadLine()); 

Tenga en cuenta que si el usuario introduce algo que no se puede analizar en un doble, se lanzará una excepción.

Editar:

Para ampliar mi respuesta, la razón por la que no está funcionando para usted es que está obteniendo una entrada del usuario en formato de cadena e intentando ponerla directamente en un doble. No puedes hacer eso. Primero debe extraer el doble valor de la cadena.

Si desea realizar algún tipo de comprobación de errores, simplemente haga esto:

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

Gracias a Öyvind y Abatischev por ayudarme a refinar mi respuesta.

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

La razón principal de las diferentes entradas / salidas a las que se enfrenta es que Console.Read() devuelve código de caracteres, ¡no un número que haya escrito! Aprenda cómo usar MSDN .

Creo que hay algunos errores de comstackción.

  • Writeline debe ser WriteLine (‘L’ mayúscula)
  • falta de punto y coma al final de una línea

      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); 

En algún momento en el futuro .NET4.6

 //for Double double inputValues = double.Parse(Console.ReadLine()); //for Int int inputValues = int.Parse(Console.ReadLine()); 
 string str = Console.ReadLine(); //Reads a character from console double a = double.Parse(str); //Converts str into the type double double b = a * Math.PI; // Multiplies by PI Console.WriteLine("{0}", b); // Writes the number to console 

Console.Read() lee una cadena de la consola UN CARÁCTER ÚNICO A LA VEZ (pero espera una entrada antes de continuar. Normalmente lo usa en un ciclo while ). Entonces, si escribe 25 + Enter, devolverá el valor unicode de 2 que es 50 . Si vuelve a hacer una segunda Console.Read() volverá inmediatamente con 53 (el valor Unicode de 5 ). Una tercera y una cuarta Console.Read() devolverán el final de los caracteres de línea / carro. Un quinto esperará por una nueva entrada.

Console.ReadLine() lee una string (por lo tanto, debe cambiar la cadena a un double )

Te falta un punto y coma: double b = a * Math.PI;

  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; }