我正在尝试拆分此数组中的数据,但它一直给我这个错误:
索引越界。
数组的大小为10.创建错误的代码行是
int score = int.Parse(scoreInfo[1]);
这是我的代码:
static void Main(string[] args)
{
const int SIZE = 10;
for (int j = 0; j < SIZE; j++)
{
// prompt the user
Console.WriteLine("Enter player name and score on one line");
Console.WriteLine("seperated by a space.");
// Read one line of data from the file and save it in inputStr
string inputStr = Console.ReadLine();
// The split method creates an array of two strings
string[] scoreInfo = inputStr.Split();
// Parse each element of the array into the correct data type.
string name = (scoreInfo[0]);
int score = int.Parse(scoreInfo[1]);
if (inputStr == "")
{
Console.WriteLine(scoreInfo[j]);
}
}
Console.ReadLine();
}
答案 0 :(得分:0)
我使用常量来尝试你的代码,例如&#34; Guy 19&#34;。 .Split()方法将根据空格分解输入字符串。如果您没有输入后跟数字的空格,那么您的scoreInfo [1]将为空,解析将失败。
尝试在.Split()之后添加断点,以确定scoreInfo是否正确分割为2号数组,其中[0]是播放器的名称,[1]是整数分数。如果您输入的名称类似于&#34; FirstName LastName 20&#34;那么位置[1]的信息不会是整数,解析也会失败。
你的for循环有点令人费解,你是否为10名球员的球队循环了10次?您可以将对话框置于while循环中,并在解析失败或用户键入类似&#34; exit&#34;。
之类的内容时中断。答案 1 :(得分:0)
有些注意事项。您正在使用SIZE
来表示循环应该进行多少次迭代。它不是您的阵列的大小。你的数组只会随着分裂而变大。如果用空格作为分隔符进行拆分,则在索引0和1处的数组中将有2个对象。
scoreInfo[j]
大于1时,您写下j
的最后一部分将会失败。