C#使用命令行参数实现数字阶乘报索引越界错误如何解决
错误原因
你遇到的System.IndexOutOfRangeException异常是因为代码尝试访问args[0]获取输入值,但在线评测系统的测试用例是通过标准输入(STDIN)传输数据,而非命令行参数args传递,此时args数组为空,访问索引0自然会触发数组越界。
修复后的代码
using System; class Solution { static void Main(String[] args) { int result = 1; // 从标准输入读取内容并转换为整数 int fact = int.Parse(Console.ReadLine().Trim()); for(int i = 1; i <= fact; i++) { result *= i; } Console.WriteLine(result); } }
注意事项
- 不需要额外引入
System.Collections.Generic和System.IO命名空间,代码中未用到相关功能 - 原代码中判断
fact==0的分支可以省略,因为0的阶乘是1,当fact=0时for循环不会执行,result默认值1就是正确结果,逻辑更简洁 - 如果要兼容异常输入场景,可以用
int.TryParse替代int.Parse做类型转换,避免非法输入触发格式异常,大部分在线评测平台的测试用例输入都是合法的,直接用int.Parse即可满足要求。
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

