Soy bastante nuevo en la programación, así que tenga algo de piedad;) Estoy tratando de construir un programa que pueda resolver ecuaciones y dar gradiente, etc., en C #, para poder hacerlo más complejo gradualmente. El problema es que parece haber un valor incorrecto de mi entrada cuando intenté comenzar a construirlo.

Consola: Valor dado para "a": 9 La salida: 57

Mi código:

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Input an linear Eqasion in the following Pattern -- a * x + b");
            Console.Write("Given value for \"a\":");
            decimal aValue;
            aValue = Console.Read();
            Console.Write(aValue);
        }
    }
}
2
Vale 13 feb. 2020 a las 15:18

2 respuestas

La mejor respuesta

Console.Read() devuelve un {{X1} }, pero no en la forma en que piensas. Devuelve el valor numérico del carácter escrito, no la interpretación intuitiva humana de un personaje que casualmente es un número. Considere, por ejemplo, lo que devolvería si escribe una letra o cualquier otro carácter no numérico.

¿Y cuál es el valor numérico (decimal) para el carácter '9'? 57 es.

Parece que quieres leer la línea, no el personaje. Por ejemplo:

string aValue;
aValue = Console.ReadLine();
Console.Write(aValue);

Recuerde que deberá presionar Intro para enviar la línea a la aplicación.

Si más tarde necesitará que el valor sea numérico, aún querrá ingresar la cadena pero querrá analizarla. Por ejemplo:

string aValue;
aValue = Console.ReadLine();
if (decimal.TryParse(aValue, out decimal numericValue)
{
    Console.Write(numericValue);
}
else
{
    // The value could not be parsed as a decimal, handle this case as needed
}
5
David 13 feb. 2020 a las 12:26

Console.Read devuelve el código de caracteres ingresado en la línea de comando en este escenario. El código de caracteres ASCII de 9 es 57. Si desea una entrada numérica, sería mejor usar Console.ReadLine con Decimal.Parse (o mejor aún, Decimal.TryParse)

También vale la pena señalar que Console.Read solo devuelve un carácter a la vez , lo que significa que para cualquier entrada después de 1 dígito necesitará un manejo especial. Recomiendo usar ReadLine y analizar la cadena en lugar de manejar la conversión de los códigos de caracteres al número que representan.

4
Zaelin Goodman 13 feb. 2020 a las 12:25