问题描述
FileStreamfs=newFileStream(datapath,FileMode.Open);StreamReadersr=newStreamReader(fs);intline_Num=0;//总行数while(sr_E.ReadLine()!=null){line_Num++;}double[]Fre_Eva=newdouble[line_Num];double[]Value_Eva=newdouble[line_Num];sr_E.BaseStream.Seek(0,System.IO.SeekOrigin.Begin);string[]line;for(inti=0;i<line_Num;i++){line=sr_E.ReadLine().Split('');Value_Eva[i]=Convert.ToDouble(line[4]);Fre_Eva[i]=Convert.ToDouble(line1[0]);}2003002.510-156.838213690286400802010-158.0630764326038005010010-156.60942623748216002832010-156.60179607582132005580010-151.68004945094;txt文件的数据如下:2003002.510-156.838213690286400802010-158.0630764326038005010010-156.60942623748216002832010-156.60179607582132005580010-151.68004945094运行之后(红色语句)总是提示输入的字符串的格式不正确。如果我把txt文件的数据改成如下,然后再取第二列的数据则不会报错:12003002.510-156.8382136902862400802010-158.06307643260338005010010-156.609426237482416002832010-156.601796075821532005580010-151.68004945094求解释:
解决方案
本帖最后由 Jessica66520 于 2014-08-22 13:21:54 编辑
解决方案二:
就是格式不正确,比如有空格等,或者值超出了double的范围
解决方案三:
查一下double的范围
解决方案四:
line和line1都是什么东西你发的代码里既没有定义,也没有赋值,谁知道里面是什么
解决方案五:
另外while(sr_E.ReadLine()!=null){line_Num++;}double[]Fre_Eva=newdouble[line_Num];double[]Value_Eva=newdouble[line_Num];你这样用,也不嫌累不会定义List<double>Fre_Eva么然后在while里Fre_Eva.Add(value)
解决方案六:
double.trypase(string,outvalue)
解决方案七:
引用3楼Z65443344的回复:
line和line1都是什么东西你发的代码里既没有定义,也没有赋值,谁知道里面是什么
写错了,不好意思,应该把line1改为line.
解决方案八:
遇到这种问题,断点跟,看里面到底是什么啊最大的可能就是前面多了个空格,导致split('')之后,第一项是空字符串
解决方案九:
最好还是将分隔符改成逗号,写txt的时候即使多加了空格,转换之前string.trim()一下,空格就没了
解决方案十:
txt里,显示的时候有时候会给你自动对齐(比如输入tab,有时候占4个空格,有时候占1个)所以多输入了空格是很不明显的,可能根本看不出来如果是输入了连续2个逗号,就会比较明显了
解决方案十一:
引用4楼Z65443344的回复:
另外while(sr_E.ReadLine()!=null){line_Num++;}double[]Fre_Eva=newdouble[line_Num];double[]Value_Eva=newdouble[line_Num];你这样用,也不嫌累不会定义List<double>Fre_Eva么然后在while里Fre_Eva.Add(value)
已优化,谢谢你的建议O(∩_∩)O~
解决方案十二:
引用9楼Z65443344的回复:
txt里,显示的时候有时候会给你自动对齐(比如输入tab,有时候占4个空格,有时候占1个)所以多输入了空格是很不明显的,可能根本看不出来如果是输入了连续2个逗号,就会比较明显了
我检查过了,line[0]是有数据的,就是200,但一运行就提示
解决方案十三:
不可能吧.我觉得肯定是哪里犯了个低级错误"200"转double怎么可能报错你把文件和代码改成原来的样子,出现问题截图发上来看
解决方案十四:
肯定是分隔的时候出现空白了line=sr_E.ReadLine().Split(newchar[]{''},StringSplitOptions.RemoveEmptyEntries);
解决方案十五:
引用12楼Z65443344的回复:
不可能吧.我觉得肯定是哪里犯了个低级错误"200"转double怎么可能报错你把文件和代码改成原来的样子,出现问题截图发上来看