问题描述
硬盘分区目录下有个*.text文件,里面写有数据为:123.11456.22789.336434.122123.11456.22789.336434.122123.11456.22789.336434.122123.11456.22789.336434.122123.11456.22789.336434.122123.11456.22789.336434.122请问如何从这个文件里读取这些数据,并把他们存入DOUBLE型数组中,数组中的行、列数要与文件中的行、列数一致,相应数字也一一对应。(要求能够统计行、列数,最终存放数据的数组是DOUBLE型)我写了一段代码,按空格拆分了,但老实现不了。我是新手,哪位兄弟可以写个完整的代码给我参考下吗?(悬赏100分)
解决方案
解决方案二:
你的代码?*****************************************************************************欢迎使用CSDN论坛专用阅读器:CSDNReader(附全部源代码)http://feiyun0112.cnblogs.com/
解决方案三:
StreamReaderreader=newStreamReader("C:\123.txt");stringline="";List<double>list=newList<double>();while((line=reader.ReadLine())!=null){string[]lines=line.Split(newchar[]{''});foreach(stringlinlines){if(!string.IsNullOrEmpty(l.Trim())){list.Add(Convert.ToDouble(l));}}}
解决方案四:
大约是这样要时按照你给的东东123.11456.22789.336434.122123.11456.22789.336434.122123.11456.22789.336434.122123.11456.22789.336434.122123.11456.22789.336434.122123.11456.22789.336434.122
解决方案五:
数组中的行、列数要与文件中的行、列数一致,-----》那你弄个2维数组吧代码大致如楼上只不过还得根据你的换行符在把每行Split下然后给数组赋值
解决方案六:
classProgram{staticvoidMain(string[]args){stringpath=@"d:hhk.txt";string[]lines=File.ReadAllLines(path);//ArrayListls=newArrayList();List<string[]>ls=newList<string[]>();char[]delimiterChars={''};foreach(stringlineinlines){string[]numbers=line.Split(delimiterChars);ls.Add(numbers);}foreach(string[]ssinls){foreach(stringsinss){if(s.Trim()!=""){Double.Parse(s);}Console.WriteLine(s+"");}Console.WriteLine();}}}}
解决方案七:
如果每行固定4个数据,可以用下列代码{string[]lines=System.IO.File.ReadAllLines("yourfile.txt");double[,]data=newdouble[lines.Length,4];for(inti=0;i<lines.Length;i++){string[]toks=lines[i].Split(newchar[]{'','t'},StringSplitOptions.RemoveEmptyEntries);System.Diagnostics.Debug.Assert(toks.Length==4);//确认每行有4个数据for(intj=0;j<4;j++){boolsucceeded=double.TryParse(toks[j],outdata[i,j]);System.Diagnostics.Debug.Assert(succeeded);//确认数据都是有效的}}}
解决方案八:
中间的是空格,还是tab制表符啊?写个思路,可以先按rn拆分strng,得到不同的行,然后在按空格拆分,得到列,写近数组就行了.stringls_text="";//*.text//得到行stringrows=ls_text.Split(newstring[]{"rn","n"},StringSplitOption.None/*(忘了具体怎么写了)*/);stringfirstRow=rows[0];introwCount=rows.Length;intcolumnCount=(firstRow.Split(newstring[]{"","t"},StringSplitOption.None)).Length;double[,]arry=newdouble[rowCount,columnCount];for(introwIndex=0;rowIndex<rowCount;rowIndex++){stringrow=rows[rowIndex];stringcolumns=row.Split(newstring[]{"","t"},StringSplitOption.None);for(intcolIndex=0;colIndex<columns.Length;colIndex++){arry[rowIndex,colIndex]=double.Prase(columns[colIndex]);}}
解决方案九:
引用2楼ericzhangbo1982111的回复:
StreamReaderreader=newStreamReader("C:\123.txt");stringline="";List<double>list=newList<double>();while((line=reader.ReadLine())!=null){string[]lines=line.Split(newchar[]{''});foreach(stringlinlines){if(!string.IsNullOrEmp…
正确!换成这样的也行:StreamReaderreader=newStreamReader("C:\123.txt");stringline="";List<double>list=newList<double>();while(reader.Peek()!=-1){line=reader.ReadLine();string[]lines=line.Split(newchar[]{''});foreach(stringlinlines){if(!string.IsNullOrEmpty(l.Trim())){list.Add(Convert.ToDouble(l));}}}reader.Close()////记得最后须关闭文件!
解决方案十:
哦,应该是二维数组,参考6楼的做法
解决方案十一:
顶一下
解决方案十二:
StreamReaderreader=newStreamReader("C:\123.txt");stringline="";List<double>list=newList<double>();while((line=reader.ReadLine())!=null){string[]lines=line.Split(newchar[]{''});foreach(stringlinlines){if(!string.IsNullOrEmpty(l.Trim())){list.Add(Convert.ToDouble(l));}}}或者StreamReaderreader=newStreamReader("C:\123.txt");stringline="";List<double>list=newList<double>();while(reader.Peek()!=-1){line=reader.ReadLine();string[]lines=line.Split(newchar[]{''});foreach(stringlinlines){if(!string.IsNullOrEmpty(l.Trim())){list.Add(Convert.ToDouble(l));}}}reader.Close()orstringpath=@"d:hhk.txt";string[]lines=File.ReadAllLines(path);//ArrayListls=newArrayList();List<string[]>ls=newList<string[]>();char[]delimiterChars={''};foreach(stringlineinlines){string[]numbers=line.Split(delimiterChars);ls.Add(numbers);}foreach(string[]ssinls){foreach(stringsinss){if(s.Trim()!=""){Double.Parse(s);}Console.WriteLine(s+"");}Console.WriteLine();}
解决方案十三:
文件最好用XML形式存,可以导成DATASET的