为什么将 args[0] 保存到字符串中会出现索引超出范围异常?
Why does saving args[0] into a string give out a index-out-of-range exception?
我试图将 args[0]
保存到 string lemon
,但无论我尝试什么,它根本不起作用,而是抛出一个 IndexOutOfRange
异常:
Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array.
at NHBloater.Program.Main(String[] args) in C:\Users...\Program.cs:line 12
我试过了:
catch
正在处理
- 添加
if (args.Length > 0)
- 搜索 Google 和 Stack Overflow
编辑:我修复了它但不知道如何修复,令我担心的代码是 output += inputArray[i]
这是第一行第 10 行的代码,没有尝试修复它:
c#:
static void Main(string[] args)
{
string lemon = args[0];
string input = File.ReadAllText(lemon);
string[] inputArray = input.Split();
string output = "";
for (int i = 0; i < input.Length; i++)
for (int j = 0; j < Convert.ToInt32(args[2]); j++)
output += inputArray[i];
File.WriteAllText(args[1], output);
}
导入的库:
System
System.IO
System.Text
参数:
"h.txt"
"h2.txt"
"5"
而args
won't be null(参见link中的绿色提示框),它可能是一个长度为0的数组。
所以 args[0]
不存在,因为它指的是数组中的第一项,它没有任何项。
如果您确实在 Visual Studio 的“命令行参数”中设置它并且确实在使用调试模式 - 请参阅 。基本上 - 确保它全部在“任何 CPU”。
编辑
改变
string[] inputArray = input.Split();
到
string[] inputArray = input.ToCharArray();
如何启动Main函数(程序)?您是否将参数传递给 Main 函数?如果不是,则 args 数组的长度为 0(该数组中没有任何字段)。
您正在检查 input.Length
但您正在 访问 inputArray[i]
.
我试图将 args[0]
保存到 string lemon
,但无论我尝试什么,它根本不起作用,而是抛出一个 IndexOutOfRange
异常:
Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array. at NHBloater.Program.Main(String[] args) in C:\Users...\Program.cs:line 12
我试过了:
catch
正在处理- 添加
if (args.Length > 0)
- 搜索 Google 和 Stack Overflow
编辑:我修复了它但不知道如何修复,令我担心的代码是 output += inputArray[i]
这是第一行第 10 行的代码,没有尝试修复它: c#:
static void Main(string[] args)
{
string lemon = args[0];
string input = File.ReadAllText(lemon);
string[] inputArray = input.Split();
string output = "";
for (int i = 0; i < input.Length; i++)
for (int j = 0; j < Convert.ToInt32(args[2]); j++)
output += inputArray[i];
File.WriteAllText(args[1], output);
}
导入的库:
System
System.IO
System.Text
参数:
"h.txt"
"h2.txt"
"5"
而args
won't be null(参见link中的绿色提示框),它可能是一个长度为0的数组。
所以 args[0]
不存在,因为它指的是数组中的第一项,它没有任何项。
如果您确实在 Visual Studio 的“命令行参数”中设置它并且确实在使用调试模式 - 请参阅
编辑
改变
string[] inputArray = input.Split();
到
string[] inputArray = input.ToCharArray();
如何启动Main函数(程序)?您是否将参数传递给 Main 函数?如果不是,则 args 数组的长度为 0(该数组中没有任何字段)。
您正在检查 input.Length
但您正在 访问 inputArray[i]
.