输入小数后程序崩溃及Notepad++控制台无法输入问题求助
问题分析与解决
1. 输入小数程序崩溃的原因
你的代码存在类型转换逻辑错误:
- 变量
posx、posy、posz声明为double类型(支持小数),但你使用Convert.ToInt32(Console.ReadLine())将用户输入的字符串强制转换为整数。 - 当输入小数(如
3.14)时,Convert.ToInt32()无法解析带小数的字符串,会直接抛出FormatException异常,导致程序崩溃。
修复方案
将转换方法替换为Convert.ToDouble(),或者用更健壮的double.TryParse()(可处理非法输入,避免程序直接崩溃)。
基础修复代码:
using System; namespace ProgramPractice4 { class Program { static void Main(string[] args) { Console.WriteLine("Please give me a number. Decimals are allowed."); double posx = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Please give me another number. Decimals are allowed."); double posy = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Please give me one more number. Decimals are allowed."); double posz = Convert.ToDouble(Console.ReadLine()); Console.WriteLine(posx + posy + posz); } } }
健壮性优化代码(处理非数字输入):
using System; namespace ProgramPractice4 { class Program { static void Main(string[] args) { double posx; Console.WriteLine("Please give me a number. Decimals are allowed."); while (!double.TryParse(Console.ReadLine(), out posx)) { Console.WriteLine("Invalid input, please enter a valid number:"); } double posy; Console.WriteLine("Please give me another number. Decimals are allowed."); while (!double.TryParse(Console.ReadLine(), out posy)) { Console.WriteLine("Invalid input, please enter a valid number:"); } double posz; Console.WriteLine("Please give me one more number. Decimals are allowed."); while (!double.TryParse(Console.ReadLine(), out posz)) { Console.WriteLine("Invalid input, please enter a valid number:"); } Console.WriteLine(posx + posy + posz); } } }
2. Notepad++控制台无法输入的问题
Notepad++内置控制台不支持交互式输入,它仅用于显示编译、运行的输出日志,无法接收用户输入。解决方式:
- 先通过
csc命令行编译器(需安装.NET SDK)将代码编译为.exe可执行文件。 - 打开系统命令提示符(CMD)或PowerShell,导航到exe文件所在目录,运行该文件即可正常输入内容。
内容的提问来源于stack exchange,提问作者Cyan Phoenix
相关产品推荐
相关产品推荐

