如果我试试这个:
int count = int.TryParse(Console.ReadLine(), out count) ? count : default(int);
而不是:int count = int.Parse(Console.ReadLine());
问题已解决,但随后它会给出一个超出范围错误的数组。 我该怎么办?
using System;
using System.Linq;
using System.IO;
using System.Text;
using System.Collections;
using System.Collections.Generic;
class Player
{
static void Main(String[] args)
{
string[] inputs;
// game loop
while (true)
{
int count = int.Parse(Console.ReadLine()); // The number of current enemy ships within range
Console.Error.WriteLine("Count:" + count);
Enemy[] enemys = new Enemy[count];
for (int i = 0; i < count; i++)
{
inputs = Console.ReadLine().Split(' ');
enemys[i] = new Enemy(inputs[0], int.Parse(inputs[1]));
}
Array.Sort(enemys, delegate(Enemy en1, Enemy en2) {
return en1.Dist.CompareTo(en2.Dist);
});
Console.WriteLine(enemys[0].Name);
}
}
}
public class Enemy{
public string Name;
public int Dist;
public Enemy(string name, int dist){
this.Name = name;
this.Dist = dist;
}
}
答案 0 :(得分:0)
这可以调用&#34;数组超出范围&#34;例外,如果您的输入字符串不包含空格:
inputs = Console.ReadLine().Split(' ');
enemys[i] = new Enemy(inputs[0], int.Parse(inputs[1]));
你也应该检查一下,count
是否等于 0 ,如果它小于 0 ,你试图创建一个大小错误的数组,
答案 1 :(得分:0)
TryParse
无法解析输入并将count
的值设置为0,则返回False,这意味着您创建一个0长度的数组,但尝试访问第一个此数组的元素不存在
enemys[0].Name; // This won't exist because enemy's list is empty
首先,您应该让用户输入正确的值。
int count;
while(!int.TryParse(Console.ReadLine(), out count)
{
Console.WriteLine("Not a valid value! Try Again");
}