C#控制台输入问题:仅能输入身高,无法获取体重输入
问题根源
你误用了Console.Read()方法——它只读取单个字符的ASCII编码值,不是读取你输入的完整数字串。举个例子:你输入1.75后按回车,第一个Console.Read()只会拿第一个字符1的ASCII码(数值是49),转成double后就成了49;剩下的.75和回车符会留在输入缓冲区里,第二个Console.Read()直接读取缓冲区里的下一个字符(.的ASCII码46),根本不会等你输入体重,程序自然直接跳去计算了。
修复方案
换成Console.ReadLine(),它会读取你输入的整行内容(直到按下回车),能正确获取身高和体重的完整数值。
修正后的代码
double userheight; double userweight; double calculateBMI(double weight, double height) { return weight / (height * height); } Console.Write("Insert your height: "); userheight = Convert.ToDouble(Console.ReadLine()); Console.Write("Insert your weight: "); userweight = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("----------------------------------"); Console.WriteLine($"Your BMI is: {calculateBMI(userweight, userheight)}");
额外优化建议
如果用户输入非数字内容,Convert.ToDouble()会直接抛出异常,实际使用时可以用double.TryParse()做安全验证,避免程序崩溃:
Console.Write("Insert your height: "); while (!double.TryParse(Console.ReadLine(), out userheight)) { Console.WriteLine("请输入有效的数字!"); Console.Write("重新输入身高: "); }
内容的提问来源于stack exchange,提问作者Muaz Imtiyaz
相关产品推荐
相关产品推荐

