好的,嘿。我制作了游戏中的游戏程序。我让它在我的计算机上从他们自己的.txt加载一个播放器的数据。每当我尝试命令(.load)它告诉我(在split [1]它转换为int32)这只是一个测试,看看你的炸弹加载,输入字符串是不是正确的格式,继承代码:
StreamReader streemy = new StreamReader(@"c:\Usernames\" + player[m.GetInt(0)].username + ".txt");
string read = streemy.ReadToEnd();
if (!string.IsNullOrEmpty(read))
{
string[] split = read.Split('=');
player[m.GetInt(0)].bombs = Convert.ToInt32(split[1]);
Say(names[m.GetInt(0)].ToUpper() + ": You data has been loaded!");
streemy.Close();
}
else
{
Say(names[m.GetInt(0)].ToUpper() + ": Your data was empty :( Say '.save' to save your current data!");
}
.save将数据保存到.txt,“names [m.GetInt(0)]”是他们的用户名,Say只是告诉他们在游戏中的消息。谢谢你的帮助! PS:玩家是一个结构,它有像炸弹一样的内容。
答案 0 :(得分:1)
我建议您使用Int32.TryParse代替Convert.ToInt32。
因此,如果该值不是有效整数,那么您可以将其视为0或无炸弹。
int numberOfBombs = 0;
bool result = Int32.TryParse(value, out numberOfBombs);
现在 numberOfBombs 将保留实际值,如果存在有效的整数字段,否则它将为0.
答案 1 :(得分:0)
您必须获得FormatException
。
当辩论的格式不正确时,会抛出FormatException
我认为split [1]的值不是有效整数
根据msdn。
FormatException:value不包含可选符号后跟一系列数字(0到9)。
使用ToInt32(string)
方法相当于将值传递给Int32.Parse(String)方法。使用current thread culture的格式约定来解释值
您可以调用Int32.TryParse方法。它返回一个布尔值,指示转换是成功还是失败。