c# StartIndex 不能小于 0。怎么解决。 pos.Speed = Int32.Parse(ss[11].Substring(ss[11].IndexOf('V'))); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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 求助,webbrowser 自动填表,找不到文本框 关于登陆界面ComboBox的用法 还有dataGridView如何设置勾选框 请问C#可以在两个字符串string之间比较大小吗?我用大于符号不行。 多线程发送,接收串口数据 再问:C#,webapplication,在页面动态添加控件的问题 问个正则表达式 在线等待回音,请看看 求助各位大牛 pdf转文字的方法 Dns.GetHostByName 报socket异常 请教类似UBB代码的编写 求一个支持断点续传的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