无法在 c# 中以正确的格式输入

本文关键字:格式 输入 | 更新日期: 2023-09-27 18:36:18

新手,我无法使用以下代码正确从控制台获取输入。

int id;
string name;
float duration;
float price;
Console.WriteLine("Enter the movie id");
id = Convert.ToInt16(Console.Read());
Console.WriteLine("Enter the movie name");
name = Console.ReadLine();
Console.WriteLine("Enter the movie duration");
duration = Convert.ToInt32(Console.Read());
Console.WriteLine("Enter the movie price");
price = Convert.ToInt32(Console.Read());
bl.addMovie(id, name, duration, price);

无法在 c# 中以正确的格式输入

问题是 Console.Read 返回一个表示下一个字符输入的int。因此,发生的情况是,您输入多个字符并按 Enter 键,Read返回一个字符。然后,ReadLine返回其余字符作为字符串。

Read呼叫替换为ReadLine呼叫。

读取仅接受下一个字符。

尝试:

float price;
Console.WriteLine("Enter the movie price");
string input = Console.ReadLine();
int successStatus = float.TryParse(input, out price);
bool success = successStatus != 0;

或者简单地说:

float price;
Console.WriteLine("Enter the movie price");
price = (float) Convert.ToDouble(Console.Readline())

第一个是首选,因为它在解析时更擅长处理错误。请参阅文档。 float.TryParseSingle.TryParse的代名词

你需要做的是验证每个输入是你想要的,这是一种方式

static void Main(string[] args)
{
    int id;
    string name;
    float duration;
    float price;
    do
    {
    Console.WriteLine("Enter the movie id");
    }
    while(!int.TryParse (Console.ReadLine(), out id));
    Console.WriteLine("Enter the movie name");
    name = Console.ReadLine();
    do
    {
        Console.WriteLine("Enter the movie duration");
    }
    while (!float.TryParse(Console.ReadLine(), out duration));
    do
    {
        Console.WriteLine("Enter the movie price");
    }
    while (!float.TryParse(Console.ReadLine(), out price));
    Console.WriteLine("{0}, {1}, {2}, {3}", id, name, duration, price);
    Console.ReadKey();
}
This worked fine.Use the Console.ReadLine.
  int id;
            string name;
            float duration;
            float price;
            Console.WriteLine("Enter the movie id");
            id = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("Enter the movie name");
            name = Console.ReadLine();
            Console.WriteLine("Enter the movie duration");
            duration = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Enter the movie price");
            price = Convert.ToInt32(Console.ReadLine());