c# StartIndex 不能小于 0。怎么解决。 pos.Speed = Int32.Parse(ss[11].Substring(ss[11].IndexOf('V'))); 解决方案 » ss[11] 里面不存在('V'),所以Substring函数就会报错. if(ss.Contains('V'))pos.Speed = Int32.Parse(ss[11].Substring(ss[11].IndexOf('V'))); ss[11].IndexOf('V')先判断这个是否>-1,再执行你这句~ 你自己动动脑子就明白了.你要把字符串的一部分转为int,现在这部分提取不出来. if (ss[11].Contains("v")){ pos.Speed = Int32.Parse(ss[11].Substring(ss[11].IndexOf('V')));} if (ss[11].Contains("v")){ pos.Speed = Int32.Parse(ss[11].Substring(ss[11].IndexOf('V')));} int index = ss[11].IndexOf("v");if (index > -1){ pos.Speed = Int32.Parse(ss[11].Substring(index));} 调试运行不到这一句pos.Speed = Int32.Parse(ss[11].Substring(ss[11].IndexOf('V'))); 说明你没有找到这个“V"。所以StartIndex=-1,所以就报你说的错误,不能小于0了 if(ss[11].IndexOf('V')>-1) pos.Speed = Int32.Parse(ss[11].Substring(ss[11].IndexOf('V'))); 索引和长度必须引用该字符串内的位置。参数名: length pos.Pointed = (ss[3] == "A") ? 1 : 0; pos.La = Double.Parse(ss[4].Substring(0, 2)) + Double.Parse(ss[4].Substring(2)) / 60; 哥们 你那个ss是个什么咚咚??string string.Substring(int startIndex, int length);你看看你的ss[i]的长度和Substring中的参数是相符ss[4].Substring(0, 2)ss[4].Substring(2) // ss[4] 长度时候大于等于2?? pos.Pointed = (ss[3] == "A") ? 1 : 0; pos.La = Double.Parse(ss[4].Substring(0, 2)) + Double.Parse(ss[4].Substring(2)) / 60; if (ss[5] == "S") pos.La = 0 - pos.La; pos.Lo = Double.Parse(ss[6].Substring(0, 3)) + Double.Parse(ss[6].Substring(3)) / 60; //pos.Pointed = (ss[3] == "A") ? 1 : 0; //pos.La = Double.Parse(ss[3].Substring( 4)) + Double.Parse(ss[3].Substring(4)) / 60; //if(ss[5] == "S") // [color=#00FFFF] pos.La = 0 - pos.La; //pos.Lo = Double.Parse(ss[5].Substring(6)) + Double.Parse(ss[5].Substring(6)) / 60;[/color] 这是修改后的 pos pos 得到的值不一样 原来是113.6,34.7 改后就变成960.1666666666 16.66666667 请教:在64位操作系统中64位进程如何枚举32位进程中加载的模块? 帮我把这句sql翻译成Linq 请问在winForm窗体中如何打印? 求以下汉字转拼音首字母解决方法!!如"逍"."麒"等. 关于控件焦点问题 能否在ASP.NET站点下运行一个永远运行的线程? (没分了可怜啊,回答出来的送一个压缩解压缩的DLL带引用说明的) dataView的排序问题。在线等! 请介绍一些有大量C#和asp.net源代码下载的网站 接口的简单运用. 如何按下Esc关闭窗体? 求一个支持断点续传的FTP操作类 C# WPF中如何获得在Canvas中控件的高度和宽度
pos.Speed = Int32.Parse(ss[11].Substring(ss[11].IndexOf('V')));
if (ss[11].Contains("v"))
{
pos.Speed = Int32.Parse(ss[11].Substring(ss[11].IndexOf('V')));
}
if (ss[11].Contains("v"))
{
pos.Speed = Int32.Parse(ss[11].Substring(ss[11].IndexOf('V')));
}
if (index > -1)
{
pos.Speed = Int32.Parse(ss[11].Substring(index));
}
所以就报你说的错误,不能小于0了
pos.Speed = Int32.Parse(ss[11].Substring(ss[11].IndexOf('V')));
参数名: length pos.Pointed = (ss[3] == "A") ? 1 : 0; pos.La = Double.Parse(ss[4].Substring(0, 2)) + Double.Parse(ss[4].Substring(2)) / 60;
string string.Substring(int startIndex, int length);
你看看你的ss[i]的长度和Substring中的参数是相符
ss[4].Substring(0, 2)
ss[4].Substring(2) // ss[4] 长度时候大于等于2??
if (ss[5] == "S")
pos.La = 0 - pos.La;
pos.Lo = Double.Parse(ss[6].Substring(0, 3)) + Double.Parse(ss[6].Substring(3)) / 60; //pos.Pointed = (ss[3] == "A") ? 1 : 0; //pos.La = Double.Parse(ss[3].Substring( 4)) + Double.Parse(ss[3].Substring(4)) / 60;
//if(ss[5] == "S")
// [color=#00FFFF] pos.La = 0 - pos.La;
//pos.Lo = Double.Parse(ss[5].Substring(6)) + Double.Parse(ss[5].Substring(6)) / 60;[/color] 这是修改后的
pos pos 得到的值不一样 原来是113.6,34.7 改后就变成960.1666666666 16.66666667