无法在 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);
问题是 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.TryParse
是Single.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());